使用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
相关产品推荐
相关产品推荐

