Я много работал с DotNetOpenAuth. Сначала мы использовали 5.0.0-alpha1, но мы перешли на v4.0.30319, потому что мы не могли найти, что вызвало наши проблемы.
Мы строим проект веб-API С# на .NET 4.5.1 RC с MVC 5 RC в Visual Studio 2013. Мы реализовали 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 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" не удалось.