我已下载与http://www.dotnetopenauth.net/关联的Visual Studio 2010模板。我可以像广告一样工作。我不是从头开始一个项目,我不想花很多时间将所有web.config,处理程序等集成到我的应用程序中以使OpenID为我工作。该文档说我应该能够使用按钮和用户控件进行一行实现。我相信我已经做到了,我得到了一个错误。
这就是我所做的。
当我按下按钮时,我得到:
“前提条件失败:this.Identifier!= null未设置标识符。”
我知道它必须有更多,但我只是不明白。有人可以进一步解释我需要做什么吗?
谢谢,
<%@ Page Language="C#" %>
<%@ Register Assembly="DotNetOpenAuth" Namespace="DotNetOpenAuth.OpenId.RelyingParty" TagPrefix="rp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void LoginId_Click(object sender, EventArgs e)
{
OpenIdTextBox1.LogOn();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="LoginId" runat="server" Text="Button" onclick="LoginId_Click" />
<rp:OpenIdTextBox ID="OpenIdTextBox1" runat="server" />
</div>
</form>
</body>
</html>
答案 0 :(得分:1)
您是否在点击按钮之前在框中输入了标识符?你必须。
您可以通过添加指向文本框的RequiredFieldValidator
控件,然后在调用{之前检查按钮的单击处理程序中if (Page.IsValid)
来忘记键入标识符,从而避免出现令人讨厌的错误{1}}。
希望这会有所帮助。您是否考虑过使用LogOn
控件?如果你拍摄最容易添加,这是最简单的,因为你根本没有任何代码 - 只有一个标签。
另外,请务必将OpenIdLogin
添加到登录页面顶部的ValidateRequest="false"
标记中。否则,您的用户会偶尔看到随机失败,因为ASP.NET错误地将某些OpenID身份验证响应解释为攻击。
例如,如果.aspx的顶行是:
<%@ Page %>
成功
<%@ Page Language="C#" AutoEventWireup="True" CodeBehind="login.aspx.cs" Inherits="OpenIdRelyingPartyWebForms.login" %>