ASP.NET最误导人的错误提示:“未预编译文件,因此不能请求该文件”,如何解决?
当前位置:点晴教程→点晴OA办公管理信息系统
→『 经验分享&问题答疑 』
昨天在一个ASP.NET MVC项目中,一个预编译后的视图访问时总是报错: 未预编译文件,因此不能请求该文件(The file has not been pre-compiled, and cannot be requested) 而对应这个预编译视图的3个地方都正常: 1)内容为“这是预编译工具生成的标记文件,不应删除!”的.cshtml占位文件正常存在 2)对应的*.cshtml.7384d3d7.compiled文件正常 3)对应的App_Web_*.cshtml.7384d3d7.dll文件正常 百思不得其解,折腾了半天,后来实在没办法,放弃预编译,改用动态编译。 然后出现下面的错误信息才让人恍然大悟: System.IO.FileLoadException: 未能加载文件或程序集“System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040) 这个项目用的是MVC 5.2.2,而出问题的视图中调用了一个依赖MVC 5.1的程序集。有了这个准确的错误信息,问题很轻松地就可以解决: 在web.config中添加如下的配置: <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" /> </dependentAssembly> 如果不是放弃预编译,改用动态编译,做梦也想不到是这个原因引起的“未预编译文件,因此不能请求该文件”。 你说这是不是ASP.NET中最误导人的错误提示? 该文章在 2017/11/24 12:15:33 编辑过 |
关键字查询
相关文章
正在查询... |