Я пробовал примеры DotNetOpenAuth с ASP.Net MVC 4 Developer Preview.
Я могу успешно вызвать свое действие с моей тестовой страницы, но столкнулся со странной проблемой из-за одной строки кода:
var request = _openid.CreateRequest(openIdUrl);
var fetch = new FetchRequest();
fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email);
fetch.Attributes.AddRequired(WellKnownAttributes.Name.First);
fetch.Attributes.AddRequired(WellKnownAttributes.Name.Last);
request.AddExtension(fetch);
//return RedirectToAction("Login");
return request.RedirectingResponse.AsActionResult(); // <-- This is the line throwing the error
Если я закомментирую некорректную строку кода и раскомментирую предыдущую, я больше не вижу ошибки времени выполнения.
До сих пор я пытался:
1) Обеспечить, чтобы у меня были правильные перенаправления:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
</dependentAssembly>
</assemblyBinding>
<legacyHMACWarning enabled="0" />
</runtime>
2) Иметь правильные пространства имен:
using DotNetOpenAuth.OpenId.Extensions.AttributeExchange;
using DotNetOpenAuth.OpenId.Extensions;
Мне кажется, что библиотека DotNetOpenAuth была скомпилирована для MVC V 1.0.0 и перенаправление привязки либо не работает, либо метод расширения работал против устаревшего метода.
Версия MVC: 4.0.0.0 DotNetOpenAuth Версия: 3.4.7.11121
Любая помощь по настройке работы с MVC 4 будет принята с благодарностью.Изображение экрана ошибки MVC ниже:
Изображение экрана ошибки
Обновление Я обнаружил, что причиной проблемы может быть AsActionResult, возможнопотому что метод расширения не совместим с .Net 4.0.Я могу получить объект OutgoingWebResponse из request.RedirectingResponse, но знаю, как преобразовать его в ActionResult