ASP.NET最误导人的错误提示:“未预编译文件,因此不能请求该文件”
2014-12-24 14:36
260 查看
昨天在一个ASP.NET MVC项目中,一个预编译后的视图访问时总是报错:
而对应这个预编译视图的3个地方都正常:
1)内容为“这是预编译工具生成的标记文件,不应删除!”的.cshtml占位文件正常存在
2)对应的*.cshtml.7384d3d7.compiled文件正常
3)对应的App_Web_*.cshtml.7384d3d7.dll文件正常
百思不得其解,折腾了半天。
后来实在没办法,放弃预编译,改用动态编译。然后出现下面的错误信息才让人恍然大悟:
这个项目用的是MVC 5.2.2,而出问题的视图中调用了一个依赖MVC 5.1的程序集。
有了这个准确的错误信息,问题很轻松地就可以解决:在web.config中添加如下的配置:
如果不是放弃预编译,改用动态编译,做梦也想不到是这个原因引起的“未预编译文件,因此不能请求该文件”。
你说这是不是ASP.NET中最误导人的错误提示?
未预编译文件,因此不能请求该文件(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中最误导人的错误提示?
相关文章推荐
- ASP.NET 发布后提示未预编译文件错误的解决
- ASP.NET Webform或者ASP.NET MVC站点部署到IIS下,默认情况下.json文件是不能被访问的,如果请求访问.json文件,则会出现找不到文件的404错误提示
- 未预编译文件“/xxxx/aaa.aspx”,因此不能请求该文件错误
- ASP.NET导出excel文件提示“未指定的错误”!
- VS2010发布.NET2.0网站,出现“未预编译文件* 因此不能请求该文件”的解决办法
- 未预编译文件“.aspx”,因此不能请求该文件
- 一个百思不得其解的“ASP.NET 2.0网站运行提示: HTTP 错误 401.3 - 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。 ”错误
- 编译ASP.NET时,提示“请确保此代码文件中定义的类与“inherits”属性匹配,并且该类扩展的基类(例如Page 或UserControl)是正确的。”
- Win7中64位IIS运行32位Asp.net提示错误:未能加载文件或程序集或它的某一个依赖项,系统找不到指定的文件(已解决)
- ASP.NET页面上传文件时提示文件大小超过请求解决方法
- 在ASP 调用 VB.net 编写的dll 出错 提示:Microsoft VBScript 运行时错误 错误 '800a01ad' ActiveX 部件不能创建对象
- asp.net 2安装遇到问题的解决(由于无法创建应用程序域,因此未能执行请求。错误: 0x80070005 拒绝访问)
- asp.net fileupload上传大文件时提示404.13错误
- 未预编译文件“/default.aspx”,因此不能请求该文件
- iis部署网站(asp.net或者wcf)出现HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。
- asp.net 生成导出word表单 ,导出excel; dataTable生成xls文件,返回前台下载;asp.net启动excel错误 80070005;excel-xls columnName 不能改变; 读写excel的开源利器NPOI; 设置excel Cell的数据类型;
- IIS7.5配置Asp.net项目出现HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。
- 由于 ASP.NET 进程标识对全局程序集缓存没有读权限,因此未能执行请求。错误: 0x80131902
- "未预编译文件 因此不能请求该文件"问题处理