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

ASP.NET Core 2.1.0:Web Deploy发布IIS时自定义Identity UI Razor页面未部署问题

解决ASP.NET Core 2.1自定义Identity UI视图未部署到IIS的问题

我之前在部署自定义Identity视图时也踩过类似的坑,结合经验给你几个排查和解决的方向:

  • 确认自定义视图的位置是否正确
    ASP.NET Core 2.1的Identity视图必须放在项目根目录下的Areas/Identity/Pages文件夹中,对应功能的视图要放在子文件夹里(比如登录视图是Areas/Identity/Pages/Account/Login.cshtml)。如果你的视图放在其他路径,发布工具会自动忽略它们,这是最常见的错误之一。

  • 验证.csproj中的文件包含配置
    虽然你提到已经按文档添加了配置,但还是建议确认配置是否准确覆盖了所有自定义视图文件。正确的配置应该包含.cshtml和对应的代码后置文件:

    <ItemGroup>
      <Content Update="Areas\Identity\Pages\**\*.cshtml">
        <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
      </Content>
      <Content Update="Areas\Identity\Pages\**\*.cshtml.cs">
        <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
      </Content>
    </ItemGroup>
    

    这个配置的作用是告诉发布工具,把Areas/Identity/Pages下所有的视图文件都复制到发布目录,PreserveNewest会保证最新的文件被覆盖。

  • 检查Web Deploy的发布设置
    打开Visual Studio的发布配置面板:

    1. 切换到“文件发布选项”,看看是否勾选了保留现有文件——如果勾选了,新添加的自定义视图可能不会被部署到服务器,建议临时取消勾选后重新发布测试。
    2. 点击“预览”按钮,查看即将发布的文件列表,确认你的自定义.cshtml文件是否在列表中。如果不在,说明项目配置没有包含这些文件,回到第二步修正.csproj。
  • 排查视图预编译问题
    ASP.NET Core 2.1默认会在发布时预编译视图,如果自定义视图没有被包含在预编译范围里,也会出现部署后找不到的情况。你可以临时禁用预编译来测试:

    <PropertyGroup>
      <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
    </PropertyGroup>
    

    添加到.csproj后重新发布,如果视图能正常部署,说明是预编译配置的问题,你可以进一步调整预编译的包含规则,确保自定义Identity视图被包含进去。

  • 手动验证发布包和服务器文件

    1. 在发布时选择“创建包”,生成.zip文件后打开,检查Areas/Identity/Pages下是否有你的自定义视图。如果没有,说明项目本身没有把这些文件纳入发布范围,必须修正.csproj配置。
    2. 登录IIS服务器,找到站点的物理路径,手动删除Areas/Identity文件夹,然后重新发布。有时候旧的Identity文件可能被锁定,导致Web Deploy无法替换,手动清理后再部署就能解决。

如果以上步骤都试过还是不行,可以查看Visual Studio发布时的输出窗口,里面会显示每个文件的处理状态,有没有跳过或错误的提示,这些信息能帮你快速定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:36:49