我已经与DotNetOpenAuth进行了大量合作。首先,我们使用5.0.0-alpha1,但是由于找不到导致问题的原因,我们切换到v4.0.30319。

我们正在Visual Studio 2013中使用MVC 5 RC在.NET 4.5.1 RC上构建C#Web API项目。我们已实现IAuthorizationServerHostINonceStoreICryptoKeyStore

我们遇到的问题与以下情况有关:

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.MessagingMessagingUtilities静态类的方法。 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/

10-12 21:35