ASP.Net MVC3安全升級致使程序集從3.0.0.0變爲3.0.0.1

開發環境通常引用的是本機 C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies下的System.Web.Mvc.dll,當系統更新時,此文件會更新爲高級版本,從而和已經部署到服務器上的System.Web.Mvc.dll版本不一致。從能在線上運行時報下面的錯誤:html

Assembly 'TestUnsafe, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' uses 'System.Web.Mvc, Version=3.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35' which has a higher version than referenced assembly 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'服務器

發現沒?System.Web.MVC的版本要求是3.0.0.1,而bin裏放的仍然是3.0.0.0,確定跑不起來。xml

OK,換個新的程序集上去,把System.Web.MVC.dll 3.0.0.1版放上去,仍然跑不起來,報錯:htm

Parser Error Message: Could not load file or assembly 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)ci

 

這是因爲Web.config未更新致使的,找到下面的幾行:開發

  <runtime>    部署

 <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">       <dependentAssembly>         <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />         <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />       </dependentAssembly>  get

</assemblyBinding>it

  </runtime>io

 

調整oldVersion和newVersion,改爲:

  <runtime>     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">       <dependentAssembly>         <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />         <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.1" />       </dependentAssembly>     </assemblyBinding>   </runtime>

 

看到沒?把舊版本的MVC統一映射到3.0.0.1版去。再訪問站點,一切正常了。

相關文章
相關標籤/搜索