我正在尝试使用Swagger和Web API。我只是使用随Visual Studio安装的ASP.NET 4.6模板中的“Azure API App”模板,其中包括Swashbuckle.Core
和SwaggerConfig.cs
。 API工作正常(我能够成功调用它),但如果我尝试去“http://mybaseurl/swagger/”,我会收到此错误:
HTTP错误403.14 - 禁止Web服务器配置为不列出此目录的内容。
似乎Swagger没有得到装载或其他东西。其他人之前得到过这个吗?我似乎无法解决这个问题。谢谢,如果我能提供更多详细信息,请告诉我。
这是我的SwaggerConfig.cs的样子:
[assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")]
namespace With.Api
{
public class SwaggerConfig
{
public static void Register(HttpConfiguration config)
{
var thisAssembly = typeof(SwaggerConfig).Assembly;
config.EnableSwagger(c =>
{
c.SingleApiVersion("v1", "With.Api");
})
.EnableSwaggerUi();
}
}
}
我刚遇到同样的问题。当我将我的应用程序部署到Azure时,它运行良好,但是当我在本地启动它时,Swagger就不会像上面所描述的那样出现。恢复到以前的版本,我知道之前的工作也没有帮助,所以它似乎与IIS express有关。我不完全确定导致该问题的原因(我已经更改了一些与SSL相关的设置),但是当我删除.vs文件夹(包含applicationhost.config文件)并重新启动Visual Studio时,它又开始工作了。
这是一个老问题,但对于面临同样问题的人来说会有所帮助
如果您的项目在根级别有一个名为swagger
的文件夹,则会发生冲突,您将无法通过hostname/swagger
访问swagger。
解决方案是将Swagger文件夹重命名为另一个名称,然后它就可以了。
尝试使用此URL,http://mybaseurl/swagger/ui/index
而不是http://mybaseurl/swagger/
由于某种原因改变Application_Start中的调用顺序,将解决问题,这就是我所拥有的:
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
**GlobalConfiguration.Configure(SwaggerConfig.Configure);**
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
XmlConfigurator.Configure();
这解决了我在.net核心web api
安装这个nuget包Microsoft.AspNetCore.StaticFiles
我遇到了同样的问题。在尝试了几件事之后,它仍然无效。然后,我尝试更改Web API应用程序端口号,如下面的链接所示,它工作正常。我不确定是什么导致了这个问题。
我有这个问题,它的路由和静态目录冲突。对于Web Api 2,请确保您没有名为“swagger”的静态文件夹。对于.NET Core,请删除wwwroot中名为“swagger”的文件夹。