vue.js - 如何将 ASP Core Web API VueJS 站点部署到 IIS

标签 vue.js asp.net-core iis asp.net-web-api

一般来说,我是 VueJS 和 SPA 的新手。我创建了一个新的 ASP Core 站点,其中包含一个用于数据的 WebAPI Controller 和一个 VueJS 前端。我现在正尝试将此站点部署到 IIS,但我不确定如何正确执行。我在 IIS 中创建了一个新应用程序,并将应用程序池设置为“无托管代码”,并将物理位置设置为 VueJS app/dist 文件夹。该网站正在加载,但我收到所有服务电话的 404。我认为这是因为站点的根目录设置为 VueJS 应用程序文件夹,而不是 ASP Core 文件夹的根目录。如何正确设置它以从 myServer/mySite 为我的应用程序提供服务,并将我的服务端点设置为 myServer/mySite/api/myController/myAction?

最佳答案

场景:您的 dotnet 核心应用程序具有 API 端点,并且您希望在同一站点上托管客户端站点 SPA。 API 调用将传递到 dotnet 应用程序,任何其他请求都将为 SPA 的 index.html 提供服务。

.NET 核心通过 Microsoft.AspNetCore.SpaServices 命名空间中的方法支持这种情况,例如 UseSpa()

另请注意,在 .NET 5 中,这些扩展正在移动到单独的包 Microsoft.AspNetCore.SpaServices.Extensions。它现在可用,但没有很好的记录。

在此示例中,您构建的 SPA 应该放在 ClientApp/dist

例如

using Microsoft.AspNetCore.SpaServices;

public class Startup
{
    // ...

    public void ConfigureServices(IServiceCollection services)
    {
        // In production, the SPA files will be served from this directory
        services.AddSpaStaticFiles(configuration =>
        {
            configuration.RootPath = "ClientApp/dist";
        });
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        // ...

        app.UseStaticFiles();
        app.UseSpaStaticFiles();

        app.UseMvc();

        // Must be near the end of the method because 
        // it will send any unhandled requests to index.html for SPA
        app.UseSpa(spa =>
        {
            spa.Options.SourcePath = "ClientApp";

            if (env.IsDevelopment())
            {
                // Development requests are send through to local node server
                spa.UseProxyToSpaDevelopmentServer("http://localhost:8080/");
            }
        });
    }
}

关于vue.js - 如何将 ASP Core Web API VueJS 站点部署到 IIS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62335517/

相关文章:

vue.js - Vuejs - 列表 - 如何将点击函数作为字符串传递

c# - Kendo MVC Core - 网格 - 无法通过路线获取数据 - 400 错误请求

asp.net-core - 有没有办法使用 NuGet 或其他方式打包 ASP.NET Core 应用程序?

powershell - 使用 powershell 启动/停止 IIS 网站时的权限

javascript - 为什么index-of在vuejs中不能正常工作?

vue.js - Vue 无法在 for 循环内监视对象属性 setter

css - 如何截断 vue-multiselect 中的选项?

asp.net - 使用 IdentityServer4 动态添加 SSO 步骤

c# - 如何成功使用 existingResponse ="Auto"?

javascript - 如何使用 IIS 设置 react-router clear URL?