2012-03-09 51 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提供者有关。