我已经与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>
这使我们更进一步。现在错误归结为:
最佳答案
可修复。
安装NuGet软件包DotNetOpenAuth.Mvc5并将AsActionResult()
的所有用法更改为AsActionResultMvc5()
关于c# - DotNetOpenAuth不适用于MVC 5 RC,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19013429/