Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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# 如何在Asp.NETCore2.x中将root重定向到swagger?_C#_Asp.net Core_Swagger - Fatal编程技术网

C# 如何在Asp.NETCore2.x中将root重定向到swagger?

C# 如何在Asp.NETCore2.x中将root重定向到swagger?,c#,asp.net-core,swagger,C#,Asp.net Core,Swagger,我正在构建与Swagger集成的Asp.NETCore2.xWebAPI。为了访问swagger,我必须在url后面加上/swagger,例如 如何重定向到?安装Microsoft.AspNetCore。从Nuget重写 在Startup.cs中 public void Configure(IApplicationBuilder app, IHostingEnvironment env) public void Configure(IApplicationBuilder app, IHost

我正在构建与Swagger集成的Asp.NETCore2.xWebAPI。为了访问swagger,我必须在url后面加上/swagger,例如


如何重定向到?

安装Microsoft.AspNetCore。从Nuget重写

在Startup.cs中

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
以前

app.UseMvc();


创建如下所示的默认控制器:

使用Microsoft.AspNetCore.Mvc;
名称空间Api
{
[ApiExplorerSettings(IgnoreApi=true)]
公共类DefaultController:控制器
{
[路线(“/”)]
[路线(“/docs”)]
[路线(“/swagger”)]
公共IActionResult索引()
{
返回新的重定向结果(“~/swagger”);
}
}
}
任何url“/”、“/docs”或“/swagger”都会重定向到“/swagger”

  • 打开launchSettings.json文件
  • 根据您的设置,您应该在“配置文件”节点下 具有一个或多个配置文件。在5月份的案例中,我有“IIS Express”和 另一个以我的项目名称命名(例如WebApplication1), 现在将启动URL条目更改为“启动URL”:“招摇过市” 解决了我的问题
  • 如果这不起作用,并且您有其他配置文件,请执行相同的操作,然后 测试
  • 在Startup.cs中

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    
     public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    
    您应该有一个设置招摇过市UI选项的部分。添加RoutePrefix选项并将其设置为空字符串

                app.UseSwaggerUI(c =>
                {
                    c.SwaggerEndpoint("/swagger/v1/swagger.json", "My service");
                    c.RoutePrefix = string.Empty;  // Set Swagger UI at apps root
                });
    
    在Startup.cs之后:

    app.UseSwaggerUI(options =>
                      {
                          options.SwaggerEndpoint("/swagger/v1/swagger.json", "API V1");
    
    加:


    这将使您的根url成为主api url。

    我已使用修改了launchSettings.json “launchUrl”:“招摇过市”而不是“launchUrl”:“api/values”

    为我工作,如果这对你不起作用,移除
    c、 RoutePrefix=string.Empty;从你的app.UseSwaggerUI配置中。

    添加此项后仍会转到
    /api/values
    ?在我的例子中,我稍微更改了重定向URL(返回新的重定向结果(“~/swagger/index.html”)),它工作得很好。当URL仅为“~/swagger”而没有index.html时,Chrome抛出了“太多重定向”错误(如果您分析一下,您可以知道原因)。使用.NET Core 3.1测试的漂亮而干净的解决方案这是为swagger设置路由前缀,而不是重定向到实际的swagger根。如果我没有在launchSettings.json中的“profiles”“launchUrl”值下将launchSettings.json设置为“”(空字符串),那么实际上您必须在launchSettings.json->launchUrlIn Properties文件夹中进行更改。上述操作对我不起作用。现在我有了这个“launchUrl”:“它可以工作了。