Phi*_*ray 28 swagger katana asp.net-web-api2
我尝试将Swagger与Microsoft WebAPI 2 一起使用.
目前,我在一个方法中进行了以下调用.
appBuilder
.ConfigureOAuth()
.UseWebApi(configuration)
.UseWelcomePage();
Run Code Online (Sandbox Code Playgroud)
如果我想使用Swagger,我必须使用这个URL" https:// localhost:44300/swagger "哪一个非常好用.
我希望我的主页重定向到我的招摇的网址,也许如下,但这个示例不起作用.
appBuilder
...
.UseWelcomePage("/swagger");
Run Code Online (Sandbox Code Playgroud)
任何的想法 ?
pat*_*ley 52
通过在RouteConfig.cs中添加路由,我得到了我想要的工作方式:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
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 }
);
}
Run Code Online (Sandbox Code Playgroud)
从swashbuckle看到这个代码,看看发生了什么:https://github.com/domaindrivendev/Swashbuckle/blob/master/Swashbuckle.Core/Application/RedirectHandler.cs
小智 16
在Configuration(IAppBuilder应用程序)方法的Startup.cs文件中,我使用这行代码使其在加载时重定向到swagger欢迎页面.
app.Run(async context => {
context.Response.Redirect("swagger/ui/index");
});
Run Code Online (Sandbox Code Playgroud)
所以我使用的完整方法如下
[assembly: OwinStartup(typeof(AtlasAuthorizationServer.Startup))]
namespace AtlasAuthorizationServer
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
HttpConfiguration config = new HttpConfiguration();
WebApiConfig.Register(config);
app.UseWebApi(config);
app.Run(async context => {
context.Response.Redirect("swagger/ui/index");
});
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,这将在visual studio中引发绿色警告.我确信有一些方法可以模仿这与函数中的await调用异步.
小智 9
对于Asp.Net核心使用此:
app.Run(context => {
context.Response.Redirect("swagger/ui");
return Task.CompletedTask;
});
Run Code Online (Sandbox Code Playgroud)
小智 6
如果您来这里寻找 asp.net core 2 的答案,您可以通过将 RoutePrefix 的 swagger 设置为应用程序根目录来实现相同的效果
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My service");
c.RoutePrefix = string.Empty; // Set Swagger UI at apps root
});
Run Code Online (Sandbox Code Playgroud)
如何在 Asp.Net Core 2.x 中将 root 重定向到 swagger?
好的,这是一种方法。添加一个新的MVC控制器(非Web API),例如HomeController,并在Index操作中添加以下代码:
using System.Web.Mvc;
namespace Kids.Math.Api.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return new RedirectResult("~/swagger/ui/index");
}
}
Run Code Online (Sandbox Code Playgroud)
}
另外,请确保您的路由配置具有以下内容(注意,默认情况下已经包含)
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
Run Code Online (Sandbox Code Playgroud)
在 ASP.NET Core 中,您可以在将 SwaggerUI 注册为空字符串时简单地更改 RoutePrefix。
app.UseSwaggerUI(c =>
{
c.RoutePrefix = "";
...
};
Run Code Online (Sandbox Code Playgroud)
不需要重定向配置,除非您仍然想要/swagger
或路径中的类似内容。
归档时间: |
|
查看次数: |
24997 次 |
最近记录: |