私は DotNetOpenAuth で多くの作業を行ってきました。最初は 5.0.0-alpha1 を使用していましたが、問題の原因が特定できなかったため、v4.0.30319 に切り替えました。
Visual Studio 2013 で MVC 5 RC を使用して .NET 4.5.1 RC で C# Web API プロジェクトを構築してIAuthorizationServerHost
いINonceStore
ますICryptoKeyStore
。
私たちが抱えている問題は、次の場合です。
public class TokensController : Controller
{
private readonly AuthorizationServer authorizationServer = new AuthorizationServer(new MyAuthorizationServer());
/// <summary>
/// This action will handle all token requests.
/// </summary>
/// <returns>The action result that will output the token response.</returns>
[HttpPost]
public ActionResult Index()
{
var outgoingWebResponse = this.authorizationServer.HandleTokenRequest(this.Request);
return outgoingWebResponse.AsActionResult();
}
}
return outgoingWebResponse.AsActionResult();
DotNetOpenAuth.Messaging
およびMessagingUtilities
静的クラスに由来するメソッド。(DotNetOpenAuth.Core
このコードを含む) は MVC 4.0 を参照し、HttpResponseMessageActionResult
クラスは から継承しActionResult
ます。
これは、DotNetOpenAuth の現在のバージョンが MVC 5 と互換性がないことを意味します。これをコンパイルして実行しようとすると、500 エラーが発生します。
これを簡単に修正する方法を知っている人はいますか (またはそうでないかもしれません)。
DotNetOpenAuth Nuget パッケージが 5.0 用のパッケージを上書きしていることに気づきませんでした。したがって、パッケージを再インストールし、assemblyBinding を再度追加した後:
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
</assemblyBinding>
これで少し前進しました。エラーは次のようになります。
セキュリティ透過メソッド 'DotNetOpenAuth.Messaging.MessagingUtilities.AsActionResult(DotNetOpenAuth.Messaging.OutgoingWebResponse)' によるセキュリティ クリティカル タイプ 'System.Web.Mvc.ActionResult' へのアクセスに失敗しました。