ASP.NET最誤導(dǎo)人的錯(cuò)誤提示:“未預(yù)編譯文件,因此不能請(qǐng)求該文件”,如何解決?
昨天在一個(gè)ASP.NET MVC項(xiàng)目中,一個(gè)預(yù)編譯后的視圖訪問(wèn)時(shí)總是報(bào)錯(cuò): 未預(yù)編譯文件,因此不能請(qǐng)求該文件(The file has not been pre-compiled, and cannot be requested) 而對(duì)應(yīng)這個(gè)預(yù)編譯視圖的3個(gè)地方都正常: 1)內(nèi)容為“這是預(yù)編譯工具生成的標(biāo)記文件,不應(yīng)刪除!”的.cshtml占位文件正常存在 2)對(duì)應(yīng)的*.cshtml.7384d3d7.compiled文件正常 3)對(duì)應(yīng)的App_Web_*.cshtml.7384d3d7.dll文件正常 百思不得其解,折騰了半天,后來(lái)實(shí)在沒(méi)辦法,放棄預(yù)編譯,改用動(dòng)態(tài)編譯。 然后出現(xiàn)下面的錯(cuò)誤信息才讓人恍然大悟: System.IO.FileLoadException: 未能加載文件或程序集“System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一個(gè)依賴項(xiàng)。找到的程序集清單定義與程序集引用不匹配。 (異常來(lái)自 HRESULT:0x80131040) 這個(gè)項(xiàng)目用的是MVC 5.2.2,而出問(wèn)題的視圖中調(diào)用了一個(gè)依賴MVC 5.1的程序集。有了這個(gè)準(zhǔn)確的錯(cuò)誤信息,問(wèn)題很輕松地就可以解決: 在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> 如果不是放棄預(yù)編譯,改用動(dòng)態(tài)編譯,做夢(mèng)也想不到是這個(gè)原因引起的“未預(yù)編譯文件,因此不能請(qǐng)求該文件”。 你說(shuō)這是不是ASP.NET中最誤導(dǎo)人的錯(cuò)誤提示? 該文章在 2017/11/24 12:15:33 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |