【发布时间】:2019-06-12 18:55:02
【问题描述】:
我使用模块零核心模板(Angular 和 ASP.NET Core,但我使用的是 .NET Full Framework 4.x 除外)创建了一个带有 ASP.NET 样板 (ABP) 的应用程序。当我对 IIS 进行标准部署时它工作正常(Angular 在端口 80 上运行,ASP.NET Web API 在端口 21021 上运行)。但是,如果我尝试将 Web API 部署到 IIS 应用程序(类似于虚拟目录),则会遇到 Swagger 集成问题。我找到的以前的答案没有提供问题的解决方案。
例如,IIS 应用程序的 URL 是 http://example.com/myapi。导航到该 URL 应该重定向到 http://example.com/myapi/swagger,但它会重定向到 http://example.com/swagger,而不存在。 ServerRootAddress 在 appsettings.json 中设置为 http://example.com/myapi。这可能是由于 Web.Host 项目的 HomeController 中有如下代码:
public IActionResult Index()
{
return Redirect("/swagger");
}
它似乎是硬编码到网站的根目录,而不是使用相对路径,但我不确定。如果我修改控制器以使用相对路径,则会加载 Swagger 页面,但我无法进行身份验证。它尝试导航到http://example.com/api/TokenAuth/Authenticate 而不是http://example.com/myapi/api/TokenAuth/Authenticate。同样,它没有使用相对路径。以下是来自 abp.swagger.js 的相关代码:
xhr.open('POST', '/api/TokenAuth/Authenticate', true);
这是 ABP 或模块零核心模板的限制,还是我需要在 ABP、Swagger/Swashbuckle 或 IIS 中进行一些额外配置才能使其正常工作? FWIW,该应用程序在 ABP 3.8 版上运行。
【问题讨论】:
标签: iis aspnetboilerplate asp.net-boilerplate