Я пробовал образцы DotNetOpenAuth с ASP.Net MVC 4 Developer Preview.
Я могу успешно вызывать свой Action с тестовой страницы, но столкнулся со странной проблемой из-за одной строки кода:
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) Убедиться, что у меня правильные перенаправления:
2) Иметь правильные пространства имен:
using DotNetOpenAuth.OpenId.Extensions.AttributeExchange;
using DotNetOpenAuth.OpenId.Extensions;
Мне кажется, что DotNetOpenAuth dll была скомпилирована под MVC V 1.0.0 и перенаправление привязки либо не работает, либо метод расширения, возможно, работает против устаревшего метода.
Версия MVC: 4.0.0.0 DotNetOpenAuth Версия: 3.4.7.11121
Любая помощь в работе с MVC 4 будет очень признательна. Изображение экрана ошибки MVC приведено ниже:
Update Я обнаружил, что причиной проблемы является AsActionResult, возможно, потому что метод расширения не совместим с .Net 4.0. Я могу получить объект OutgoingWebResponse из request.RedirectingResponse, но не знаю, как привести его к ActionResult