Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Microsoft.AspNetCore.OData v8.0.0-preview2时,Swagger失败_C#_Asp.net Core_Swagger_Odata - Fatal编程技术网

C# 使用Microsoft.AspNetCore.OData v8.0.0-preview2时,Swagger失败

C# 使用Microsoft.AspNetCore.OData v8.0.0-preview2时,Swagger失败,c#,asp.net-core,swagger,odata,C#,Asp.net Core,Swagger,Odata,我正在从事一个ASP.NET Core 5 API项目,我正在使用Microsoft.AspNetCore.OData v8.0.0-preview2 如果我使用现成的ASP Net Web应用程序模板,在添加OData之前,Swagger工作得很好 但是,只要我添加以下代码 services.AddOData( option => option.AddModel("v1", GetV1EdmModel()) .Select() .Expand(

我正在从事一个ASP.NET Core 5 API项目,我正在使用Microsoft.AspNetCore.OData v8.0.0-preview2

如果我使用现成的ASP Net Web应用程序模板,在添加OData之前,Swagger工作得很好

但是,只要我添加以下代码

services.AddOData(
    option => option.AddModel("v1", GetV1EdmModel())
    .Select()
    .Expand()
    .Filter()
    .OrderBy()
    .Count());
。。。转到my Startup.cs-->ConfigureServices方法,然后尝试导航到../swagger端点。swagger页面将加载,但显示以下错误:

Failed to load API definition

Fetch error
unidentified /swapper/v1/swagger.json
Microsoft.AspNetCore.OData v8.0.0-preview2版本中是否还不支持swagger?还是我遗漏了什么

我读过徐山姆的博客帖子;及

但是没有提到这个问题


是否有人有解决方案或解决方法?

您可以在响应中找到错误消息:

System.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.
尝试在
服务之后添加以下代码。AddOData(…)

services.AddMvcCore(选项=>
{
foreach(options.OutputFormatters.OfType()中的var outputFormatter,其中(\u=>\ uu.SupportedMediaTypes.Count==0))
{
outputFormatter.SupportedMediaTypes.Add(新的MediaTypeHeaderValue(“application/prs.odatatestxx odata”);
}
foreach(options.InputFormatters.OfType()中的var inputFormatter,其中(\u=>\ uu.SupportedMediaTypes.Count==0))
{
inputFormatter.SupportedMediaTypes.Add(新的MediaTypeHeaderValue(“application/prs.odatatestxx odata”);
}
});

和上的相同问题。

您可以在响应中找到错误消息:

System.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.
尝试在
服务之后添加以下代码。AddOData(…)

services.AddMvcCore(选项=>
{
foreach(options.OutputFormatters.OfType()中的var outputFormatter,其中(\u=>\ uu.SupportedMediaTypes.Count==0))
{
outputFormatter.SupportedMediaTypes.Add(新的MediaTypeHeaderValue(“application/prs.odatatestxx odata”);
}
foreach(options.InputFormatters.OfType()中的var inputFormatter,其中(\u=>\ uu.SupportedMediaTypes.Count==0))
{
inputFormatter.SupportedMediaTypes.Add(新的MediaTypeHeaderValue(“application/prs.odatatestxx odata”);
}
});

和上的相同问题。

以/swapper开头的URL正确吗?在输出窗口(如果是IIS Express)/ASP.NET核心控制台(如果是Kestrel)中是否看到任何错误?在浏览器的开发者控制台中呢?我们需要更多信息来帮助您。据我所知,斯威格与oDatar不兼容。这里有一个更好、更完整的答案@Camiloterevento是/swagger之前的URL是正确的。我可以使用相同的URL,但指向我的一个控制器端点,这部分工作正常。只是不要大摇大摆。正如我所指出的,如果我在startup.cs中注释掉services.addOData(),那么swagger就会起作用,因此问题在于Microsoft.AspNetCore的新v8.0.0-preview2。Odata@dogyear你也许有道理。我曾在另一个项目上大摇大摆地与Microsoft.AspNetCore.OData v7.x合作,但我已经忘记了这一点。在看了代码之后,我可以看到我正在为OData使用虚张声势的纽扣。我认为这是新的Microsoft.AspNetCore.Odata v8.0.0-preview2的一个问题。我将使用Swashback OData nuget进行测试,如果这能解决问题,我将发回这里。URL以/swapper开头正确吗?在输出窗口(如果是IIS Express)/ASP.NET核心控制台(如果是Kestrel)中是否看到任何错误?在浏览器的开发者控制台中呢?我们需要更多信息来帮助您。据我所知,斯威格与oDatar不兼容。这里有一个更好、更完整的答案@Camiloterevento是/swagger之前的URL是正确的。我可以使用相同的URL,但指向我的一个控制器端点,这部分工作正常。只是不要大摇大摆。正如我所指出的,如果我在startup.cs中注释掉services.addOData(),那么swagger就会起作用,因此问题在于Microsoft.AspNetCore的新v8.0.0-preview2。Odata@dogyear你也许有道理。我曾在另一个项目上大摇大摆地与Microsoft.AspNetCore.OData v7.x合作,但我已经忘记了这一点。在看了代码之后,我可以看到我正在为OData使用虚张声势的纽扣。我认为这是新的Microsoft.AspNetCore.Odata v8.0.0-preview2的一个问题。我将使用Swashback OData nuget进行测试,如果可以解决问题,请发回这里。添加列出的代码无法解决问题。添加列出的代码无法解决问题。