如何将Swagger设置为默认起始页?

ix0qys7i  于 2022-10-24  发布在  Angular
关注(0)|答案(8)|浏览(525)

如何将Swagger设置为ABP模板中的默认起始页**而不是/Account/Login
我使用的是ASP.NETMVC 5.x+ANGLE 1.x。

更新

当前代码:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    //ASP.NET Web API Route Config
    routes.MapHttpRoute(
        name: "swagger_root",
        routeTemplate: "",
        defaults: null,
        constraints: null,
        handler: new RedirectHandler((message => message.RequestUri.ToString()), "swagger"));

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

一切仍然运行正常,除了模块Zero的"api/Account/Authenticate"请求已经中断,显示:
找不到该资源。

y3bcpkx1

y3bcpkx11#

对于ASP.Net Core>2.2中的REST风格的API,请在项目/属性/调试中设置默认URL

33qvvth1

33qvvth12#

在RouteConfig.cs中添加this路由,如下所示:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    //ASP.NET Web API Route Config
    routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
        );

    // Set Swagger as default start page
    /*
    routes.MapHttpRoute(
        name: "swagger_root",
        routeTemplate: "",
        defaults: null,
        constraints: null,
        handler: new RedirectHandler((message => message.RequestUri.ToString()), "swagger"));
    */

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}
but5z9lq

but5z9lq3#

我知道主要问题是针对ASP.NET MVC的,但对于ASP.NET Core来说,一个很好的解决方案来自于类似问题的回答(使用SwaggerUI):https://stackoverflow.com/a/50127631/1179562

app.UseSwaggerUI(c =>
{
    c.RoutePrefix = "";
    ...
};
vfhzx4xs

vfhzx4xs4#

我转到解决方案资源管理器面板>属性。在那里我发现了一个名为Launchsettings.json的文件。
在这个文件中,我在找到它的所有部分中将“LaunchUrl”参数的值更改为“swagger/index.html”。
这对我很管用。

nle07wnf

nle07wnf5#

在Asp.Net Web Api Core 3.x中,只需执行以下操作(RoutePrefix):

app.UseSwaggerUI(c =>
        {
            c.SwaggerEndpoint("/swagger/v1/swagger.json", "Baha'i Prayers API");
            c.InjectStylesheet("/swagger/custom.css");
            c.RoutePrefix = String.Empty;
        });
rqqzpn5f

rqqzpn5f6#

我可以通过使用特定的Page>/swagger/ui/index填充项目属性的Start Action来做到这一点

注:我使用的是NuGet的Swashbakle

vxbzzdmp

vxbzzdmp7#

无论是在Visual Studio、IIS Express中,还是在IIS中,我都能很好地使用它。它的目的是创建一个包含以下内容的控制器:

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;

namespace WebApplication.Controllers
{
    /// <summary>
    /// Controller to display API documentation in Swagger format
    /// </summary>
    [Route("")]
    [ApiExplorerSettings(IgnoreApi = true)]
    public class DocsController : Controller
    {
        [Route("docs"), HttpGet]
        [AllowAnonymous]
        public IActionResult ReDoc()
        {
            return View();
        }

        [Route(""), HttpGet]
        [AllowAnonymous]
        public IActionResult Swagger()
        {
            return Redirect("~/swagger");
        }
    }
}

注意:编辑Launchsettings.json文件在Visual Studio中工作得很好,但在IIS上托管应用程序时,它不会像预期的那样工作。
通过这种方式,我发现它比在几个不同位置创建大量配置要干净。

z3yyvxxp

z3yyvxxp8#

对于.Net core 3.1,更改启动设置.json文件中的配置
搜索LaunchSettings.json文件,将属性“LaunchUrl”的值更改为“swagger”。请参阅以下内容:

"profiles": {
"IIS Express": {
  "commandName": "IISExpress",
  "launchBrowser": true,
  "launchUrl": "swagger",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  }
},
"AfterPayAPI": {
  "commandName": "Project",
  "launchBrowser": true,
  "launchUrl": "swagger",
  "applicationUrl": "https://localhost:5001;http://localhost:5000",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  }
}

相关问题