Exception dotnetopenauth领域协议异常

Exception dotnetopenauth领域协议异常,exception,dotnetopenauth,Exception,Dotnetopenauth,使用dotnetopenauth,我的代码在使用openId.CreateRequest(openIdIdentifier)时运行良好。返回url是/default.aspx,我不希望它指定返回参数,我必须在realm中填充它。第二个参数的描述为 // realm: // The shorest URL that describes this relying party web site's address. For // example, if y

使用dotnetopenauth,我的代码在使用
openId.CreateRequest(openIdIdentifier)
时运行良好。返回url是/default.aspx,我不希望它指定返回参数,我必须在realm中填充它。第二个参数的描述为

    //   realm:
    //     The shorest URL that describes this relying party web site's address.  For
    //     example, if your login page is found at https://www.example.com/login.aspx,
    //     your realm would typically be https://www.example.com/.
因此,逻辑上正确的代码是

var request = openId.CreateRequest(openIdIdentifier, new Uri("http://localdev.com:8844/"), new Uri("http://localdev.com:8844/login"));
但是我得到了这个协议例外

openid.return_to参数 (http://localdev.com:8844/login?dnoa.userSuppliedIdentifier=http://myid.myopenid.com/) 与实际URL不匹配 (http://localdev.com:8844/Default.aspx?dnoa.userSuppliedIdentifier=http://myid.myopenid.com/&openid.assoc_handle=...) 这项要求是在有人同意的情况下提出的

WTF


如何在没有异常的情况下返回/登录?如果你能告诉我如何让它使用POST而不是GET,我想你会在浏览器上出现OpenID提供程序后,以及在重定向回RP的过程中出现此错误,这是对的吗

您正在测试的提供商似乎正在将浏览器发送到错误的URL。但是,由于提供商不太可能凭空制造“default.aspx”,因此我们需要查看日志以了解到底发生了什么

你可以。
或者尝试使用此OpenID标识符登录到您自己的RP站点:这是一个诊断标识符,将在以下位置生成日志消息。无论采用哪种方式收集,请将相关日志添加到您的问题中,以便我们更好地分析发生的情况。

我假设您在浏览器上出现OpenID提供程序后,以及在重定向回RP的过程中出现此错误,对吗

您正在测试的提供商似乎正在将浏览器发送到错误的URL。但是,由于提供商不太可能凭空制造“default.aspx”,因此我们需要查看日志以了解到底发生了什么

你可以。
或者尝试使用此OpenID标识符登录到您自己的RP站点:这是一个诊断标识符,将在以下位置生成日志消息。无论采用哪种方式收集,请将相关日志添加到您的问题中,以便我们更好地分析发生了什么。

我今天也遇到了类似的问题,尽管我使用的是纯MVC3。至少在MVC中,不需要使用
CreateRequest()
发送returnUrl,在将表单发布到登录处理程序时,只需将returnUrl作为参数传递就足够了,如下所示:

视图:


有趣的是,returnUrl变量仍然可用,即使在OpenID身份验证过程中,当
RelyingParty.GetResponse()
不再为空时,即使在第二次通过此方法时也是如此。

我今天也遇到了类似的问题,尽管我使用的是纯MVC3。至少在MVC中,不需要使用
CreateRequest()
发送returnUrl,在将表单发布到登录处理程序时,只需将returnUrl作为参数传递就足够了,如下所示:

视图:


有趣的是,returnUrl变量仍然可用,即使是在OpenID身份验证期间,当
RelyingParty.GetResponse()
不再为空时,该方法的第二次传递也是如此。

我认为您可能误读了某些内容。我怀疑如果没有返回url,它会重定向到/哪个ASP.NET将更改为default.aspx。因此,我使用realm和returntour的重载。这个领域给了我一个问题-编辑-但是现在页面确实返回到我想要的/login。我刚刚抛出了一个异常,非常烦人,毫无意义。从另一个角度看,dotnetopenauth似乎指定了它,因为我在对myopenid的get请求中看到了默认的aspx。为什么你坚持认为域是问题的根源?根据您在问题中包含的错误,这与领域无关。在
openid.return\u to
参数中指定/看到的值DotNetOpenAuth与实际处理来自提供程序的肯定断言的URL不匹配。如果您不知道,OpenID return_to参数与ASP.NET forms auth ReturnUrl参数完全不同。我很困惑。我可以告诉你,如果我不指定领域并返回到它的工作。我无法想象返回url是“错误的”(假设它是您的站点和有效的uri)。DotNetOpenAuth认为什么是“实际处理提供者的肯定断言的URL”?您提到“制造”default.aspx“不知从何而来”。我不认为默认值存在于任何GET请求中。(在那里或后面)我不知道为什么dotnetopenauth认为默认登录页面。作为一种解决方法,我只是将我的登录代码移动到默认,并在出现错误时将其重定向到登录。这很烦人/令人沮丧,我不能毫无问题地指定返回位置。我想你可能误读了一些东西。我怀疑如果没有返回url,它会重定向到/哪个ASP.NET将更改为default.aspx。因此,我使用realm和returntour的重载。这个领域给了我一个问题-编辑-但是现在页面确实返回到我想要的/login。我刚刚抛出了一个异常,非常烦人,毫无意义。从另一个角度看,dotnetopenauth似乎指定了它,因为我在对myopenid的get请求中看到了默认的aspx。为什么你坚持认为域是问题的根源?根据您在问题中包含的错误,这与领域无关。在
openid.return\u to
参数中指定/看到的值DotNetOpenAuth与实际处理来自提供程序的肯定断言的URL不匹配。如果您不知道,OpenID return_to参数与ASP.NET forms auth ReturnUrl参数完全不同。我很困惑。我可以告诉你,如果我不指定领域并返回到它的工作。我无法想象返回url是“错误的”(假设它是您的站点和有效的uri)。DotNetOpenAuth认为实际处理肯定断言的URL是什么
<form action="/Login/LogOn?returnUrl=@returnUrl" method="post">
[ValidateInput(false)]
public ActionResult LogOn(string returnUrl)
{...}