2

AccountController何らかの理由で、MVC4 アプリケーションの ActionMethod の 1 つに投稿しようとすると、読み込みに失敗したSystem.Web.Mvc, Version=1.0.0.0か、依存関係の 1 つが表示されます。実際にランタイム バージョン 4 を使用しているときに、なぜこのアセンブリを読み込もうとするのかわかりません。

参照されているアセンブリの 1 つがこの問題を引き起こしているのではないかと疑っていましたが、よくわかりません。私の主な容疑者はDotNetOpenAuth.Core、次のトレースによるものです。

=== バインド前の状態情報 === LOG: User = NT AUTHORITY\NETWORK SERVICE LOG: DisplayName = System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 (完全指定) LOG: Appbase = file:///C:/tfs/AMS/Main/AMS/AuthServer/ LOG: Initial PrivatePath = C:\tfs\AMS\Main\AMS\AuthServer\bin アセンブリの呼び出し: DotNetOpenAuth.Core、Version=4.2。 0.0、カルチャ = ニュートラル、PublicKeyToken = 2780ccd10d57b246。=== ログ: このバインドは、デフォルトのロード コンテキストで開始されます。ログ: アプリケーション構成ファイルの使用: C:\tfs\AMS\Main\AMS\AuthServer\web.config ログ: ホスト構成ファイルの使用: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config ログ: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config のマシン構成ファイルを使用します。ログ: ポリシー後の参照: System.Web.Mvc、バージョン = 1.0.0.0、Culture=neutral, PublicKeyToken=31bf3856ad364e35 ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/root/d0b0b808/59620299/System.Web. Mvc.DLL。ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/root/d0b0b808/59620299/System.Web.Mvc/System.Web.Mvc .DLL. ログ: 新しい URL ファイルのダウンロードを試みています:///C:/tfs/AMS/Main/AMS/AuthServer/bin/System.Web.Mvc.DLL。WRN: アセンブリ名を比較すると、不一致が発生しました: メジャー バージョン ERR: アセンブリのセットアップを完了できませんでした (hr = 0x80131040)。プローブが終了しました。Web.Mvc.DLL。ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/root/d0b0b808/59620299/System.Web.Mvc/System.Web.Mvc .DLL. ログ: 新しい URL ファイルのダウンロードを試みています:///C:/tfs/AMS/Main/AMS/AuthServer/bin/System.Web.Mvc.DLL。WRN: アセンブリ名を比較すると、不一致が発生しました: メジャー バージョン ERR: アセンブリのセットアップを完了できませんでした (hr = 0x80131040)。プローブが終了しました。Web.Mvc.DLL。ログ: 新しい URL ファイルのダウンロードを試みています:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/root/d0b0b808/59620299/System.Web.Mvc/System.Web.Mvc .DLL. ログ: 新しい URL ファイルのダウンロードを試みています:///C:/tfs/AMS/Main/AMS/AuthServer/bin/System.Web.Mvc.DLL。WRN: アセンブリ名を比較すると、不一致が発生しました: メジャー バージョン ERR: アセンブリのセットアップを完了できませんでした (hr = 0x80131040)。プローブが終了しました。アセンブリのセットアップを完了できませんでした (hr = 0x80131040)。プローブが終了しました。アセンブリのセットアップを完了できませんでした (hr = 0x80131040)。プローブが終了しました。

次のメソッドに投稿しようとすると、例外が発生します。

    [HttpPost]
    public ActionResult Login(String username, String password)
    {
        var request = Session[SESSION_KEY] as EndUserAuthorizationRequest;
        if (request != null)
        {
            Guid siteId = Guid.Parse(request.ClientIdentifier);
            Boolean isAuthenticated = this._identityProviderManager.Authenticate(siteId, "FA", username, password);
            if (isAuthenticated)
            {
                var serviceHost = new AuthorizationServerHost();
                var authorizationServer = new DotNetOpenAuth.OAuth2.AuthorizationServer(serviceHost);
                var approvalMessage = authorizationServer.PrepareApproveAuthorizationRequest(request, username, request.Scope);
                return authorizationServer.Channel.PrepareResponse(approvalMessage).AsActionResult();

            }
        }
        return View();
    }

何か案は?

4

1 に答える 1

4

わかりました、解決策を見つけました。どうやら私はweb.configファイルに以下を追加しなければなりませんでした。

  <runtime>
    <!-- This prevents the Windows Event Log from frequently logging that HMAC1 is being used (when the other party needs it). -->
    <legacyHMACWarning enabled="0" />
    <!-- When targeting ASP.NET MVC 3, this assemblyBinding makes MVC 1 and 2 references relink
             to MVC 3 so libraries such as DotNetOpenAuth that compile against MVC 1 will work with it.
        <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.0" />
            </dependentAssembly>
        </assemblyBinding>
         -->
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

うまくいけば、それは同じ問題に遭遇する他の人々を助けるでしょう。

于 2013-03-14T17:15:12.740 に答える