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?

Другие вопросы по тегам