gpt4 book ai didi

c# - 将 Excel 连接到 .Net Core v1.1 OData v4 时出现异常 添加至少一种媒体类型?

转载 作者:行者123 更新时间:2023-11-30 12:40:18 27 4
gpt4 key购买 nike

使用 .Net Core v1.1 创建一个 OData 服务,从浏览器连接它工作正常,但从 Excel 2016 连接时失败,作为一个基本的 OData 提要。异常(exception)是

'InvalidOperationException' No media types found in 'Microsoft.AspNetCore.OData.Formatter.ODataOutputFormatter.SupportedMediaTypes'. Add at least one media type to the list of supported media types.

Excel 和浏览器都连接到‘http://localhost:52315/odata ' with Method = 'GET'

来自浏览器的 HeaderAccept 是:

"text/html, application/xhtml+xml, image/jxr, */*"

来自 excel 的 HeaderAccept 是:(注意:为了便于阅读,我在“;”之后添加了新行)

"application/json;
odata.metadata=minimal;
q=1.0,application/json;
odata=minimalmetadata;
q=0.9,application/atomsvc+xml;
q=0.8,application/atom+xml;
q=0.8,application/xml;
q=0.7,text/plain;
q=0.7"

任何有关如何添加媒体类型以及应该添加哪些媒体类型的见解都值得赞赏。似乎无法找到处理此问题的示例或以前的问题。

最佳答案

这显然是一个已知问题(参见 https://github.com/OData/WebApi/issues/597)。它似乎不太可能在 vNext 分支中得到解决,但幸运的是,我找到了解决方法。

在您的 Startup.cs 中,在注册 Odata 之后,添加以下代码段:

public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddOData();
services.AddMvcCore(options =>
{
// loop on each OData formatter to find the one without a supported media type
foreach (var outputFormatter in options.OutputFormatters.OfType<ODataOutputFormatter>().Where(_ => _.SupportedMediaTypes.Count == 0))
{
// to comply with the media type specifications, I'm using the prs prefix, for personal usage
outputFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/prs.dummy-odata"));
}
});
}

这将找到所有未声明支持的媒体类型的输出格式化程序,并添加一个虚拟的。

引用资料:

关于c# - 将 Excel 连接到 .Net Core v1.1 OData v4 时出现异常 添加至少一种媒体类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42196836/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com