You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在IIS虚拟目录部署Vue.js 3与ASP.NET Core API配置求助

IIS部署Vue.js+ASP.NET Core API的正确配置步骤

一、不改动IIS视图的部署配置

  • 保留现有物理文件夹结构,仅在目标子目录(如你的App目录)上操作:右键该目录→选择「转换为应用程序」,分配独立的应用程序池(前端目录可选择「无托管代码」模式,API目录选择对应.NET Core版本的托管模式)。
  • 无需修改站点根目录的任何配置或结构,确保仅拥有该子目录的操作权限即可完成部署。

二、修复静态资源路径指向错误

1. 调整Vue项目构建配置

在项目根目录的vue.config.js中设置publicPath为你的子路径:

module.exports = {
  publicPath: '/app/' // 对应访问路径abc.com/app/
}

重新执行npm run build,将生成的dist目录文件部署到IIS的App目录下。

2. 配置正确的URL重写规则(App目录下的web.config)

替换原有规则,确保同时处理Vue路由跳转和静态资源路径:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <!-- 路由重写:非静态资源/非API请求指向index.html -->
        <rule name="Vue Route Rewrite" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            <add input="{REQUEST_URI}" pattern="^/api/" negate="true" /> <!-- 排除API路径 -->
          </conditions>
          <action type="Rewrite" url="/app/index.html" />
        </rule>
      </rules>
    </rewrite>
    <!-- 确保静态资源MIME类型正确 -->
    <staticContent>
      <mimeMap fileExtension=".json" mimeType="application/json" />
      <mimeMap fileExtension=".js" mimeType="application/javascript" />
      <mimeMap fileExtension=".css" mimeType="text/css" />
    </staticContent>
  </system.webServer>
</configuration>

三、ASP.NET Core API配套配置

如果API部署在同一站点的子目录(如/api),需在Program.cs中配置路由前缀和跨域:

var builder = WebApplication.CreateBuilder(args);

// 配置跨域策略
builder.Services.AddCors(options =>
{
    options.AddPolicy("AllowVueApp", policy =>
    {
        policy.WithOrigins("https://abc.com/app")
              .AllowAnyHeader()
              .AllowAnyMethod();
    });
});

builder.Services.AddControllers();

var app = builder.Build();

app.UseCors("AllowVueApp");
app.UseHttpsRedirection();
app.UseAuthorization();

// 设置API路由前缀
app.MapControllers().WithRoutePrefix("/api");

app.Run();

最后检查

  • 部署后清除浏览器缓存,避免旧路径缓存影响测试
  • 确认应用程序池状态正常,无权限或版本不匹配问题

内容的提问来源于stack exchange,提问作者pavels

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 23:15:33