Ошибка с PartitionKey в веб-API ASP.NET Core 8 с использованием Audit.NET и таблицы хранилища AzureC#

Место общения программистов C#
Ответить
Anonymous
 Ошибка с PartitionKey в веб-API ASP.NET Core 8 с использованием Audit.NET и таблицы хранилища Azure

Сообщение Anonymous »

Я работал над реализацией журнала аудита в веб-API ASP.NET Core 8, используя библиотеку Audit.NET, в частности, с AzureStorageTableDataProvider для хранения событий аудита. Документацию библиотеки можно найти здесь:
https://github.com/thepirat000/Audit.NE ... /README.md
Я столкнулся с проблемой при настройке подключения к хранилищу таблиц Azure. Вот соответствующая часть моей настройки:

Код: Выделить всё

public void AuditSetupOutput(IApplicationBuilder app)
{
var options = new JsonSerializerOptions { WriteIndented = true };

Configuration.Setup()
.JsonSystemAdapter(options)
.UseAzureTableStorage(config => config
.Endpoint(new Uri("https://account.table.core.windows.net"), new DefaultAzureCredential())
.TableName(evt => $"{_TargetTableName}{DateTime.UtcNow:MMMyyyy}")
.ClientOptions(new TableClientOptions { Retry = { MaxRetries = 3 } })
.EntityBuilder(builder => builder
.PartitionKey(auditEvent => auditEvent.EventType)
.RowKey(auditEvent => Guid.NewGuid().ToString("N"))
.Columns(col => col
.FromDictionary(auditEvent => new Dictionary
{
{ "EventType", auditEvent.EventType },
{ "UserName", auditEvent.Environment.UserName },
{ "EventDuration", auditEvent.Duration },
{ "DataSize", auditEvent.ToJson().Length },
{ "Data", auditEvent.ToJson().Length >= 32000 ? CompressAuditEventData(auditEvent.ToJson()) : auditEvent.ToJson() }
})));

var httpContextAccessor = app.ApplicationServices.GetRequiredService();
Configuration.AddCustomAction(ActionType.OnScopeCreated, scope =>
{
scope.SetCustomField("TraceId", httpContextAccessor.HttpContext?.TraceIdentifier);
});
}
Когда я проверяю эту настройку, я получаю следующую ошибку, связанную с PartitionKey:

Параметр PartitionKey со значением GET:https://demoapi.azurewebsites.net/api/product/23 находится вне диапазона RequestId:adb38aea-c002-0061-436d-d408ff000000
Время:2024-07-12T15:08:43.7480899Z

Состояние: 400 (неверный запрос)

Код ошибки: OutOfRangeInput
Содержимое:

{ "odata.error":{"code":"OutOfRangeInput","message":{"lang":"en-US","value":"The 'PartitionKey 'параметр значения 'GET:https://demoapi.azurewebsites.net/api/product/23' находится вне диапазона.\nRequestId:adb38aea-c002-0061-436d-d408ff000000\nTime:2024-07-12T15:08 :43.7480899Z"}}}

Похоже, что значение PartitionKey отклоняется. Есть ли у кого-нибудь идеи о том, почему это может происходить или как решить эту проблему?
Может ли кто-нибудь помочь мне с примером кода, который послужит ссылкой для моей реализации?

Подробнее здесь: https://stackoverflow.com/questions/787 ... azure-stor
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»