【问题标题】:Problem running ABP Web API within IIS Application (Virtual Directory)在 IIS 应用程序(虚拟目录)中运行 ABP Web API 时出现问题
【发布时间】: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


    【解决方案1】:

    我最终更改了 ABP 模板代码以在必要时使用相对路径。

    HomeController.cs:

    public IActionResult Index()
    {
        return Redirect("~/swagger");
    }
    

    abp.swagger.js:

    xhr.open('POST', '../api/TokenAuth/Authenticate', true);
    ...
    xhrTenancyName.open('POST', '../api/services/app/Account/IsTenantAvailable', true);
    

    为了使用 SignalR,需要进行更多更改。

    Angular 应用程序也需要进行一些更改。

    index.html:

    <base href="/myvirtualpath/">
    

    sidebar-user-area.component.html:

    <img src="assets/images/user.png" width="48" height="48" alt="User" />
    

    【讨论】:

    • 我已经根据 ABP 样板创建了解决方案,我的文件与您的有些不同。我没有设法克服 IdentityServer 项目的捆绑路径不正确的错误。我也看不到它的设置位置 - 内心深处的某个地方...... :(
    • @Alexander 这些更改适用于 ABP 3.8 版。我不确定新版本需要什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 2015-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多