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

如何解决ASP.NET页面中@语法无法解析生效的问题

问题根因

@ 是 Razor 视图引擎的专属语法,属于 ASP.NET Web Pages 技术栈的标记规则。你当前IIS默认走传统ASP.NET Web Forms处理管线,只识别<%= %>格式的内嵌代码块,既没加载Razor解析组件,也没把对应后缀的文件交给Razor引擎处理,所以@DateTime.Now会直接被当普通文本输出。

解决步骤

1. 安装必要的Windows功能和运行组件

  • 打开「控制面板→程序和功能→启用或关闭Windows功能」,找到「Internet Information Services→万维网服务→应用程序开发功能」,勾选以下项:
    • ASP.NET 4.8(Win10默认提供的最高版本.NET Framework 4.8对应选项,不要只勾选3.5版本)
    • .NET Extensibility 4.8
    • ISAPI 扩展
    • ISAPI 筛选器
  • 安装ASP.NET Web Pages 运行时:Razor引擎不是.NET Framework默认自带的组件,需要单独安装对应版本的ASP.NET Web Pages Runtime,安装完成后IIS才会识别Razor页面的处理逻辑。
  • 如果安装完成后仍不识别ASP.NET相关组件,以管理员身份打开命令提示符,执行以下命令重新注册IIS的ASP.NET运行时:
%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i

2. 修正站点基础配置

  • 打开IIS管理器,找到你部署的站点对应的应用程序池,做以下设置:
    • .NET CLR 版本选择「v4.0.30319」
    • 托管管道模式选择「集成」,不要用经典模式,也不要选「无托管代码」(该选项仅用于ASP.NET Core站点)
  • 注意文件后缀:带@Razor语法的页面不能存为.html或.aspx后缀,C#语法的Razor页面必须使用.cshtml后缀,否则要么被当静态文件直接输出,要么被Web Forms解析器处理,无法识别@标记。你之前的测试代码存为.cshtml后缀才会被Razor引擎解析。

3. 最小可用web.config配置

在站点根目录下创建web.config文件,填入以下基础配置即可,不需要额外复杂设置:

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.8" />
    <pages controlRenderingCompatibilityVersion="4.0" />
  </system.web>
  <system.webServer>
    <defaultDocument>
      <files>
        <add value="Default.cshtml" />
      </files>
    </defaultDocument>
  </system.webServer>
</configuration>

验证方法

把你之前写的测试代码存为Default.cshtml放到站点根目录,重启对应IIS站点后访问站点地址,@DateTime.Now就会正常输出当前服务器时间,不会再被当纯文本显示。

补充说明:你之前用<%= DateTime.Now %>能正常运行,是因为这个是ASP.NET Web Forms的原生内嵌输出语法,.aspx页面的解析器默认支持该写法,和Razor语法属于两套完全独立的页面解析规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 00:45:44