IAuthenticationRequest.RedirectToProvider не должен возвращаться, но он делает - PullRequest
5 голосов
/ 27 апреля 2010

Метод DotNetOpenAuth.OpenId.RelyingParty.IAuthenticationRequest.RedirectToProvider() задокументирован никогда не возвращаться:

Перенаправляет пользовательский агент на провайдер для аутентификации. выполнение текущей страницы заканчивается после этот звонок.

Тем не менее, он возвращается в соответствии с последней реализацией (3.4.3). Я использую следующий код:

using (var relayingParty = new OpenIdRelyingParty())
{
  var response = relayingParty.GetResponse();

  if (response == null)
  {
    // Stage 2: user submitting Identifier
    var openId = Request.Form["openId"];
    relayingParty.CreateRequest(openId).RedirectToProvider();

    throw new Exception("Never gets here");
  }

  ...
}

(Строка с надписью "Никогда не попадет сюда" достигнута). Мне нужно вернуть ActionResult из этого метода ...

  1. Это известная ошибка?
  2. Есть ли аоркрунд? Должен ли я вернуть EmptyResult?

Насколько я понимаю, это ошибка - Я отправил ее в трекер проблем проекта.

1 Ответ

5 голосов
/ 28 апреля 2010

Поскольку вы используете ASP.NET MVC, вы должны использовать этот код:

using DotNetOpenAuth.Messaging; // required for the extension method to work

    return relyingParty.CreateRequest(openid).RedirectingResponse.AsActionResult();

Очевидно, ASP.NET обычно выдает исключение в результате вызова RedirectToProvider(), но не всегда. Но приведенный выше код будет работать и более дружественен к MVC.

...