我正在使用 Microsoft.OData.Client 创建客户端 Blazor 应用程序。当我像这样创建新实体时:
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 标头。当我运行 fiddle 以查看发生了什么时,我可以看到它实际上发出了 2 个请求。
第一个请求是 POST 但不包括正文并收到 204 响应。第二个请求是实际包含创建新资产的数据的请求,并且响应包含应有的 Location 标头。
我猜 OData 客户端抱怨第一个请求的响应中缺少 Location 标头(因为第二个请求的响应确实包含标头)。但为什么它甚至提出第一个请求?
知道如何处理这个问题吗?