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

Azure Web App无法加载.NET Core 2.1应用编译视图问题求助

排查.NET Core 2.1部署Azure后缺失.cshtml视图的问题

我之前帮好几个开发者解决过一模一样的问题——本地Release跑起来没问题,Azure上明明能看到Product.Views.dll却报找不到视图,大概率是视图编译和部署配置的锅,下面给你拆解几个最常见的原因和解决办法:

1. 发布时没正确开启视图编译

.NET Core 2.1默认在Release模式下会把视图编译进DLL,但如果你的项目配置手动关了这个功能,或者发布时漏选了对应选项,就会出问题。

  • 先检查项目的.csproj文件,确保有这几行配置:
    <PropertyGroup>
      <TargetFramework>netcoreapp2.1</TargetFramework>
      <!-- 强制开启发布时编译视图 -->
      <MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>
      <!-- 关闭运行时编译,避免冲突 -->
      <MvcRazorRuntimeCompilation>false</MvcRazorRuntimeCompilation>
    </PropertyGroup>
    
  • 用Visual Studio发布的话,在发布向导的「配置」页面,确认部署模式选的是「框架依赖」或「独立」,并且勾选了「将视图编译到程序集中」(不同VS版本 wording 可能有点不一样,但核心是启用编译视图这个选项)。

2. Azure的「从包运行」配置搞的鬼

如果你的Web App开了「从包运行」(Run from package),有时候会因为包内文件只读,导致编译后的视图DLL无法被正确加载。

  • 解决办法:登录Azure门户,找到你的Web App → 「配置」→「常规设置」,把「从包运行」改成「关闭」,然后重新部署一遍。
  • 要是必须用从包运行,就在.csproj里加一行配置,指定视图编译的输出路径:
    <PropertyGroup>
      <RazorCompileOutputPath>$(OutputPath)Views</RazorCompileOutputPath>
    </PropertyGroup>
    

3. 视图DLL的部署位置不对

虽然你看到了Product.Views.dll,但它的位置可能和本地发布的结构不一样,Azure识别不到。

  • 打开Kudu控制台(直接在Azure门户的Web App里找「高级工具」→「Go」),进入site/wwwroot目录,看看Product.Views.dll是不是和主程序DLL在同一个文件夹,或者有没有放到Views子目录里?要和本地发布后的结构完全一致才行。
  • 要是你的解决方案是多项目结构,还要确认发布时把视图项目的输出也包含进去了,别只发布了主Web项目。

4. 视图命名空间或路由的小坑

虽然本地正常,但Azure环境有时候对命名空间更敏感,比如视图项目的命名空间和主项目不匹配,导致找不到视图。

  • 检查视图项目的.csproj里的<RootNamespace>是不是和主项目一致;或者在主项目的Startup.cs里手动添加视图项目的命名空间:
    using System.Reflection;
    // ...
    services.AddMvc()
            .AddApplicationPart(Assembly.Load("Product.Views"))
            .AddRazorOptions(options =>
            {
                // 确保视图路径规则正确
                options.ViewLocationFormats.Add("/Views/{1}/{0}.cshtml");
                // 添加视图项目的命名空间
                options.RootNamespaces.Add("Product.Views");
            });
    

先从第一点开始排查,大部分情况都是发布时的视图编译配置没弄对,调整完重新部署应该就能解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:15:13