托管到本地 IIS 后,无法读取 ASP.NET Core 1.2 应用程序上的 swagger JSON 文件

异界

托管我的 asp.net core 1.2 应用程序后,我收到如下错误:

swagger 无法找到该swagger.json文件。

我试图通过提供一个虚拟路径名来解决这个问题,app.UseSwaggerUI()但它不起作用。

编辑以根据评论澄清问题:

在 IIS 中托管 Asp.net 核心应用程序后,该swagger.json文件正在localhost:<random_port>/swagger/v1/swagger.json路径上生成

如何swagger.json在自定义路由上提供文件,例如:localhost:<random_port>/virtualpathname/swagger/v1/swagger.json

我试图在 app.UseSwaggerUI() 中设置一个虚拟路径,{virtualpathname}/swagger/v2/swagger.json但仍然无法正常工作

史蒂夫·兰德

可能有几个原因 - 一个是 .Net Core 默认不提供静态文件(尽管查看在线示例这似乎不是问题)。

如果您还没有,请尝试安装软件包Microsoft.AspNetCore.StaticFiles使用以下配置添加UseStaticFiles()您的Configure()方法Startup.cs我不认为顺序很重要,但这是我在工作应用程序中运行的顺序。

public void Configure(...)
{
  // Enable middleware to serve static files (like .json)
  app.UseStaticFiles();

  //Enable middleware for your API
  app.UseMvc();

  // Enable middleware to serve generated Swagger as a JSON endpoint
  app.UseSwagger();

  // Enable middleware to serve swagger-ui assets (HTML, JS, CSS etc.)
  app.UseSwaggerUI(c =>
  {
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "YourApp API V1");
  });
}

您还需要SwaggerGen在您的ConfigureServices()方法中配置中间件

services.AddSwaggerGen(c =>
{
  c.SwaggerDoc("v1", new Info { Title = "api_name", Version = "1.0"});
});

根据评论编辑- 在自定义路线上提供 swagger json:

// Enable middleware to serve generated Swagger as a JSON endpoint on a custom endpoint
app.UseSwagger(c => c.RouteTemplate = "custom/swagger/{documentName}/swagger.json");

// Enable middleware to serve swagger-ui assets (HTML, JS, CSS etc.)
// Using custom endpoint defined above
app.UseSwaggerUI(c =>
{
  c.SwaggerEndpoint("/custom/swagger/v1/swagger.json", "YourApp API V1");
});

如果您还需要在自定义路由上提供 SwaggerUI,则:

// Enable middleware to serve swagger-ui assets (HTML, JS, CSS etc.)
// Using custom endpoint defined above
// And serving UI on a custom route
app.UseSwaggerUI(c =>
{
  c.SwaggerEndpoint("/custom/swagger/v1/swagger.json", "YourApp API V1");
  c.RoutePrefix = "custom"; // serves UI on http://{domain}:{port}/custom/
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无需在IIS上发布即可进行ASP.NET Core应用程序调试

如何在IIS上承载基本的ASP.NET Core 2 WebAPI应用程序

无法在ASP.NET Core 2应用程序上注销Identityserver4的OpenIdConnect身份验证

在IIS上托管Asp.Net Core 2

使用ASP.net Core 2.0应用程序在IIS上托管时,VueJs Url重写错误

带有Windows10的IIS上ASP.NET Core应用程序不断崩溃

在IIS Express上运行的OpenCover for ASP.Net Core应用程序

IIS 10.0不允许上载.NET Core 2 Web应用程序的文件

无法在ASP.NET Core 2.1 + IIS上设置HTTPS

无法在运行时通过IIS托管的ASP.NET Core应用程序设置ODBC源

是否可以在.NET Framework 4.6.1控制台应用程序上使用ASP.NET Core 2.x MVC

ASP.NET Core 2.2+ Web应用程序上的多种表单

Azure AD身份验证redirect_uri在Linux托管的(Cloud Foundry)ASP.NET Core 2.2应用程序上未使用https

IIS Express上的ASP.NET Core 3.1应用程序:“无法访问此站点”

SignalR .Net Core 3.1 Web应用程序无法在本地IIS上运行

发布发布在IIS中的blazor程序集应用程序ASP.NET CORE后,出现DirectoryNotFoundException错误

无法从Windows 2008R2上运行的IIS上托管的asp.net(框架版本4)应用程序发送邮件?

如何使用WebListener和Windows身份验证将ASP.NET Core应用程序托管在IIS下?

.NET Core上的ASP.NET Core是否遵循控制台应用程序模型或IIS托管模型?

无法在ASP.NET Core 1应用程序中使用Oracle托管驱动程序

已发布的 .Net Core 2 应用程序不读取 appsettings.json 文件

在自托管 .net core 2.2 应用程序上正确使用 IsDevelopement()

托管在 Azure 和 WebApi C# .Net Core 2.2 上的 React 应用程序上的 Sharepoint online/365 集成(上传文件)

ASP .NET Core 应用程序部署到 IIS 但经纬度在部署到 IIS 的应用程序上没有小数点

IIS Express 10 上的 ASP.NET Core 应用程序出现 HTTP 500 错误

无法连接托管在 Azure Web 应用程序上的安全 Asp.Net Core Web 套接字(使用 TLS)

Docker 上的 Asp.net Core - 无法访问 index.html 或 /swagger/v1/swagger.json

将 .NET Core 2.0.8 目标应用程序托管到 IIS 时出错

如何在 IIS 中托管 asp.net core MVC 应用程序?