C# 如何从根url重定向到/swagger/ui/index?
我有一个安装了Swashback的WebApi项目C# 如何从根url重定向到/swagger/ui/index?,c#,asp.net-web-api,swagger,swashbuckle,C#,Asp.net Web Api,Swagger,Swashbuckle,我有一个安装了Swashback的WebApi项目 在默认设置中,我必须在浏览器中打开http://localhost:56131/swagger/ui/index查看我的操作说明和测试页面。我希望它可以从网站的根目录访问:http://localhost:56131/。如何实现这一点?如果您确实使用Web API项目,您可以: 使能 在现有或新控制器中创建以下方法: [路由(“”,HttpGet] [ApiExplorerSettings(IgnoreApi=true)] 公共HttpRe
在默认设置中,我必须在浏览器中打开
http://localhost:56131/swagger/ui/index
查看我的操作说明和测试页面。我希望它可以从网站的根目录访问:http://localhost:56131/
。如何实现这一点?如果您确实使用Web API项目,您可以:
- 使能
- 在现有或新控制器中创建以下方法:
[路由(“”,HttpGet]
[ApiExplorerSettings(IgnoreApi=true)]
公共HttpResponseMessage重定向到WaggerUI()
{
var httpResponseMessage=新的httpResponseMessage(HttpStatusCode.Found);
httpResponseMessage.Headers.Location=新Uri(“/swagger/ui/index”,UriKind.Relative);
返回httpResponseMessage;
}
请注意使用了ApiExplorerSettings
属性,这样它就不会出现在招摇定义中。受稍微修改的代码的影响:
public类WebApiConfig
{
公共静态无效配置(IAppBuilder应用程序)
{
var httpConfig=new HttpConfiguration();
//属性路由
config.maphttpAttribute路由();
//将root重定向到Swagger用户界面
config.Routes.MapHttpRoute(
名称:“招摇过市用户界面”,
routeTemplate:“”,
默认值:null,
约束:null,
处理程序:新的重定向处理程序(SwaggerDocsConfig.DefaultRootUrlResolver,“swagger/ui/index”);
//使用此WebApi HttpConfiguration配置OWIN
app.UseWebApi(httpConfig);
}
}
这样就不必像@bsoulier在回答中那样创建新的WebAPI控制器
此解决方案基于
swashback.Core
组件中已有的类RedirectHandler
。上述答案的更简单变体:
public class DefaultController : Controller
{
[Route(""), HttpGet]
[ApiExplorerSettings(IgnoreApi = true)]
public RedirectResult RedirectToSwaggerUi()
{
return Redirect("/swagger/");
}
}
越简单越好!这一行适合我。如果任务允许,在_layout.chtml中,只需在标题中添加以下行:
在属性launchsettings.json中为
.net core
加载页面后,这将在swagger/index上重定向您,并修改配置文件和api部分以指向swagger
profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "api/swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"authapi": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "api/swagger",
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
在asp.net core 2.1/2.2中的launchSetting.Json中更改
launchUrl=“swagger/index.html”
的值
"ProjectName": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "swagger/index.html",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:44333"
}
如果您正在运行dotnet core,只需转到properties->launchsettings.json并注释掉或删除launchUrl,然后将swagger RoutePrefix设置为string.Empty。对于ASP Net core>2.2中的RESTFUL API,请在Project/properties/Debug中设置默认URL 和launchSettings.json将自动更新:
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger/index.html",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
你能解决这个问题吗@kpa6uk?@Sampada不,我没有。我相信这可以通过一些web api重定向来解决,而swagger就是我的例子。为了进一步研究,我暂停了这项任务。你看了我的答案了吗?如果把它标记为解决方案helped@bsoulier我当然做了,但我还没有机会测试它,对不起。当我测试你的答案时,我肯定会这样做。你可以查看url-很高兴你指出了.trim('/')-我第一次错过了这个!那么Asp.net Core呢?@SyaifulNizamYahya尝试一下Asp.net Core的解决方案:如何启用Http属性路由?在软件包管理器控制台中安装软件包Microsoft.AspNet.WebApi.WebHost似乎没有做到这一点。config.maphttpAttribute()完美!这对我来说效果更好,因为我的RouteConfig中已经有一些奇怪的路由,我不想碰它。正如你所看到的,这个问题是针对WebAPI的,那里没有html内容。如果你编辑这个答案以使用预格式化的文本块,这会很有帮助。这个设置会被复制到发布目录吗?它似乎只对发展有用。。。