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

使用Visual Studio 2022发布ASP.NET Core+Angular到Azure遇问题求助

解决ASP.NET Core + Angular Azure部署路径嵌套及认证失效问题

核心问题定位

你的问题根源是Visual Studio发布时错误地将Angular构建产物(dist文件夹)部署到了site\wwwroot\wwwroot,而非默认的site\wwwroot,后续发布的嵌套行为和认证路由404都由此衍生。

分步解决方案

1. 修正VS发布配置,避免路径嵌套

  • 打开项目中的发布配置文件(通常在Properties\PublishProfiles下的.pubxml文件),添加以下配置,确保Angular构建产物直接发布到site\wwwroot:
    <PropertyGroup>
      <PublishDir>$(WebPublishDir)</PublishDir>
      <DeleteExistingFiles>True</DeleteExistingFiles>
    </PropertyGroup>
    <Target Name="PublishAngular" AfterTargets="ComputeFilesToPublish">
      <Exec Command="npm run build --prod" WorkingDirectory="$(SpaRoot)" />
      <ItemGroup>
        <DistFiles Include="$(SpaRoot)dist\**" />
        <ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
          <RelativePath>%(DistFiles.RecursiveDir)%(DistFiles.Filename)%(DistFiles.Extension)</RelativePath>
          <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
        </ResolvedFileToPublish>
      </ItemGroup>
    </Target>
    
  • 或者在VS发布向导的文件发布选项中,取消勾选“在发布期间保留现有文件”,并确认目标路径为site\wwwroot。

2. 恢复Azure Web App默认路径映射

  • 登录Azure门户,进入你的Web App,依次点击配置 > 路径映射,将虚拟路径/的物理路径改回默认的site\wwwroot,保存更改。这会避免后续发布时出现wwwroot嵌套的问题。

3. 修复Identity认证路由404错误

  • 检查ASP.NET Core项目的Program.cs,确保已注册Razor Pages端点(Identity依赖此路由):
    app.MapRazorPages(); // 确保这行代码在app.UseAuthorization()之后
    
  • 确认Angular项目中认证相关的跳转路径正确,比如注册页面的路由应指向/Identity/Account/Register,没有额外的前缀。
  • 验证Azure上的数据库连接字符串:在Azure门户的Web App 配置 > 应用程序设置中,检查ConnectionStrings下的数据库连接字符串是否正确,且数据库已完成迁移(可通过VS发布时勾选“执行Code First迁移”,或在Azure Cloud Shell中运行dotnet ef database update)。

4. 重新发布项目

完成以上配置后,在Visual Studio中重新发布项目,此时Angular产物会直接部署到site\wwwroot,无需修改路径映射,认证路由也能正常访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 21:08:30