我已经下载了与http://www.dotnetopenauth.net/关联的Visual Studio 2010模板。我可以像宣传的那样使它工作。我不是从头开始一个项目,也不想花很多时间将所有web.config,处理程序等集成到我的应用程序中,以使OpenID可以为我工作。该文档说,我应该能够使用按钮和用户控件进行单行实现。我相信我已经做到了,并且得到了一个错误。

这是我所做的。

  • 创建一个空的asp.net Web项目
  • 将DotNetOpenAuth.dll添加到bin并引用它
  • 将用户控件注册添加到页面顶部
  • 网页上的
  • 创建按钮,用于调用用户控件。

  • 当我运行它并按下按钮时,我得到:

    “前提条件失败: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>
    

    最佳答案

    您实际上是在单击按钮之前在框中输入标识符的吗?你必须。

    对于那些忘记键入标识符的人,您可以避免麻烦的事情,方法是添加一个指向文本框的RequiredFieldValidator控件,然后在调用if (Page.IsValid)之前在按钮的单击处理程序中检查LogOn

    希望这会有所帮助。您是否考虑过使用OpenIdLogin控件?如果您要添加最容易的标签,那是最简单的,因为您根本没有任何代码,只有一个标签。

    另外,请确保在登录页面顶部的ValidateRequest="false"标签中添加<%@ Page %>。否则,您的用户会偶尔遇到随机故障,因为ASP.NET错误地将某些OpenID身份验证响应解释为攻击。
    因此,例如,如果您的.aspx的第一行是:

    <%@ Page Language="C#" AutoEventWireup="True" CodeBehind="login.aspx.cs" Inherits="OpenIdRelyingPartyWebForms.login" %>
    

    做了
    <%@ Page ValidateRequest="false" Language="C#" AutoEventWireup="True" CodeBehind="login.aspx.cs" Inherits="OpenIdRelyingPartyWebForms.login" %>
    

    关于dotnetopenauth - 尝试使用asp.net中的DotNetOpenAuth登录名制作最简单的OpenID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3527603/

    10-09 20:30