Blazor с ODataClient - заголовок местоположения отсутствует
Я создаю приложение Blazor на стороне клиента с Microsoft.OData.Client. Когда я создаю новый объект вроде этого:
var dataServiceContext = this.ClientFactory.CreateClient<Container>(new Uri("http://localhost:5000/odata"));
var newAsset = new CreateAssetDto()
{
TechnicalName = "from_client_4",
DisplayNameFormat = "format from client",
Icon = "client/icon",
InheritedFrom = Guid.NewGuid(),
IsActive = true,
Translation = new AssetTranslationDto
{
Title = "Client Asset",
Language = "en",
Description = "This is asset from client"
}
};
dataServiceContext.AddToAssets(newAsset);
await dataServiceContext.SaveChangesAsync();
Я получаю исключение о том, что в ответе на этот запрос POST отсутствует заголовок Location. Когда я запускаю скрипт, чтобы посмотреть, что происходит, я вижу, что он фактически сделал 2 запроса.
Первый запрос - это POST, но не включает тело и получает 204 ответа. Второй запрос - это тот, который фактически содержит данные, создающие новый актив, а ответ содержит заголовок Location, как и должен.
Я предполагаю, что OData Client жалуется на отсутствие заголовка Location в ответе на первый запрос (поскольку ответ на второй запрос действительно содержит заголовок). Но почему он вообще делает первый запрос?
Есть идеи, как решить эту проблему?
1 ответ
Возможно, первый запрос - это предварительный запрос, отправленный браузером. Но обычно предварительные запросы CORS отправляются с использованием метода OPTIONS, а не POST. Так что случай любопытный.
Я участвую в проекте, но у меня недостаточно репутации, чтобы добавлять здесь комментарии для получения разъяснений. Не могли бы вы создать проблему на https://github.com/OData/odata.net?