2012-03-09 80 views
1

我的問題是,爲什麼當我點擊按鈕的OpenID,我加入到我的網站下面德過程中,我得到的時候使用OpenIdPortableArea,UriFormatException:MVC3,使用登錄控件

[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(documentation)由

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() 

所以,現在當我點擊登錄,我得到的標誌,並可以鍵入我的開放標識或點擊雅虎,谷歌,AOL,myopenid圖標...但他們都給我上面的錯誤。我想我沒有做任何事情來告訴OpenIdPortableArea我的網站的基本網址?

(DOTNET openaugh和MVC的contrib被underptinning OpenIdPortableArea的,解釋標記)

+0

可能是固定的庫中最近的一個bug。 – 2012-03-09 15:00:59

+0

此外,您不需要再調用AddMessageHandler。 PortableAreas現在自動註冊他們自己的消息處理程序。 – 2012-03-09 15:02:13

回答

1

的問題是從庫中的缺陷,這是在最新的版本(2.0.0.2 available now on NuGet)現在是固定的。該錯誤與建立返回URL以發送給OpenID提供者有關。