MVC3, Использование OpenIdPortableArea, UriFormatException при использовании виджета входа - PullRequest
1 голос
/ 09 марта 2012

У меня вопрос, почему, когда я нажимаю на кнопку openid, которую я добавил на свой сайт с помощью процедуры, описанной ниже, я получаю:

[UriFormatException: Invalid URI: The format of the URI could not be determined.]
 System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind) +6235084
 System.Uri..ctor(String uriString) +20
 OpenIdPortableArea.Areas.OpenId.Controllers.OpenIdController.GetAppRoot(HttpRequestBase request) +202
 OpenIdPortableArea.Areas.OpenId.Controllers.OpenIdController.GetCallBackUrl(String url) +182
 OpenIdPortableArea.Areas.OpenId.Controllers.OpenIdController.Login(LoginInput loginInput) +120

Я думаю, что URI, который он не понимает, является URL обратного вызова, который он формирует, как будто он не знает, что мой сайт? Но это всего лишь предположение из трассировки стека.

Что я сделал:

Я использую MVC3 в .Net 4.

Я установил OpenIdPortableArea ( документация )

 PM> Install-Package OpenIdPortableArea.RazorViews 

В только что созданном проекте MVC. И все прошло хорошо. Я удалил из web.config:

<section name="uri" type="System.Configuration.UriSection, System, Version=2.0.0.0, ...

Начиная с .Net 4, я считаю, что об этом позаботились в machine.config (и его появление вызвало внутреннюю ошибку сервера после развертывания). Затем я создал обработчики сообщений, дословно из документов, и поместил эти вызовы в Application_Start

  MvcContrib.Bus.AddMessageHandler(typeof(ClaimsRequestMessageHandler));
  MvcContrib.Bus.AddMessageHandler(typeof(AuthenticatedMessageHandler));

Я заменил содержимое _LoginPartial.cshtml на:

  @using  OpenIdPortableArea.UI
  @Html.LoginStatusWidget()

Так что теперь, когда я получаю клик-логин, я получаю логотипы и могу ввести свой открытый идентификатор или щелкнуть значок Yahoo, Google, AOL, Myopenid ... но все они дают мне ошибку выше. Я думаю, что я не сделал все, что мне нужно, чтобы сообщить OpenIdPortableArea базовый URL моего сайта?

(dotnet openaugh и mvc contrib не поддерживают OpenIdPortableArea, чтобы объяснить тегирование)

1 Ответ

1 голос
/ 09 марта 2012

Проблема связана с ошибкой в ​​библиотеке, которая теперь исправлена ​​в последней версии ( 2.0.0.2 теперь доступна в NuGet ). Ошибка была связана с созданием обратного URL для отправки поставщику OpenID.

...