在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
昨天在一个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中最误导人的错误提示? |
请发表评论