ASP.Net MVC 3セキュリティのアップグレードにより、プログラムセットが3.0.0.0から3.0.0.1に変更されました.

2242 ワード

従来、MVC 3アプリケーションの開発は、導入時に便利のため、ユーザー環境にMVC 3をインストールするのではなく、使用したいくつかのassemblyをbinに直接導入してきた.
  • Microsoft.Web.Infrastructure.dll
  • System.Web.Helpers.dll
  • System.Web.MVC.dll
  • System.Web.WebPages.Deployment.dll
  • System.Web.WebPages.dll
  • System.Web.WebPages.Razor.dll

  • 最近システムがアップグレードして、このようにウェブサイトを配置する時、使いにくいことを発見して、間違いを報告します:
    Compiler Error Message: CS1705: 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が入っていて、走れないに違いありません.OK、新しいプログラムセットに変えて、System.Web.MVC.dll 3.0.0.1版は載せて、依然として走ることができなくて、間違いを報告します:
    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)
    これは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>
        </assemblyBinding>
      </runtime>

    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版に統一的にマッピングします.サイトに再アクセスして、すべて正常になりました.