【问题标题】:Can I precompile my ASP.NET MVC application?我可以预编译我的 ASP.NET MVC 应用程序吗?
【发布时间】:2008-12-03 04:20:39
【问题描述】:

我尝试预编译我的 ASP.NET MVC 应用程序并将其部署到 IIS6 框(使用通配符映射),但是在呈现部分视图(用户控件)时出现错误。在预编译之前,它在我的开发机器上运行良好。

错误是:

“/”应用程序中的服务器错误。

部分视图“ListGrid”无法
被发现。以下位置是
已搜索:
~/Views/Initiative/ListGrid.aspx
~/Views/Initiative/ListGrid.ascx
~/Views/Shared/ListGrid.aspx
~/Views/Shared/ListGrid.ascx

我检查了 Views\Shared 中的文件,但它不存在,我认为这是正常的,因为它是预编译的。但只是为了咯咯笑,我在名为 ListGrid.ascx 的文件夹中放了一个空白文件,但后来我得到了这个错误:

“/”应用程序中的服务器错误。

文件“/Views/Shared/ListGrid.ascx”
没有预编译,不能
被请求。

我用谷歌搜索并搜索了 SO,但找不到任何类似的问题,但没有运气。

【问题讨论】:

标签: asp.net-mvc


【解决方案1】:

您可以通过将其放置在项目属性的构建后操作中来预编译 MVC 应用程序:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler -p "$(ProjectDir)." -v /$(ProjectName)

这比没有它需要更长的时间,但是您可以获得额外的能力来检测在部署之前会在运行时发生的一些错误。

如果您的视图中有无效代码或使用此方法缺少视图,编译将失败。

【讨论】:

    【解决方案2】:

    虽然您可以预编译 MVC 站点,但 ascx 和 aspx 视图文件不在编译后的 dll 中,只有 .cs 文件在。您仍然需要部署 .aspx 和 .ascx 视图文件。

    希望对你有帮助

    【讨论】:

    • 其实预编译的网站包含了一切,包括 ascx 和 aspx 文件。 ASP.NET 运行时仍需要存在原始文件才能以二进制形式访问它们,但它们只是占位符,不包含任何内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多