【解決方法】C# で LDAP を使用してユーザーを認証しようとしていますが、次のエラーが発生します。

プログラミングQA


これは私のログインクリックボタンイベントコードです:

C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.DirectoryServices;


namespace WebApplication1
{
    partial class ldapLogin : System.Web.UI.Page
    {
        protected void btnLogin_Click(object sender, EventArgs e)
        {
            {
                // build UID string
                String uid = "uid=" + txtUsername.Text + ",ou=people,dc=example,dc=com";
                // assign password
                String password = txtPassword.Text;
                // define LDAP connection
                DirectoryEntry root = new DirectoryEntry(
                    "LDAP://directory.example.com", uid, password,
                    AuthenticationTypes.None);

                try
                {
                    // attempt to use LDAP connection
                    object connected = root.NativeObject;
                    // no exception, login successful
                    Response.Write("<span style=\"color:green;\">Login successful.</span>");
                }
                catch (Exception ex)
                {
                    // exception thrown, login failed
                    Response.Write("<span style=\"color:red;\">Login failed.</span>");
                }

                Response.Write("<p />");

            }
        }


    // page load event
    protected void Page_Load(object Sender, EventArgs e)
    {
        if (IsPostBack) {
            // form submitted, hide login form
            loginForm.Visible = false;
        } else {
            // first page load, show login form
            loginForm.Visible = true;}

    }
    }
}

これは私のデザインコードです:

XML
<%@ Page Language="C#"
    AutoEventWireup="true"
    CodeFile="Default.aspx.cs"
    Inherits="ldapLogin"
%>
<!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 btnLogin_Click(object sender, EventArgs e)
    {

    }

    protected void txtUsername_TextChanged(object sender, EventArgs e)
    {
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>LDAP Login</title>
</head>
<body>
    <form id="form1" runat="server">
        <div id="loginForm" runat="server" visible="false">
            Username:
            <br />
            <br />
            <asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>
            <p />
            Password:
            <br />
            <asp:TextBox TextMode="Password" ID="txtPassword" runat="server" />
            <p />
            <asp:Button ID="btnLogin" runat="server" Text="Login" onclick="btnLogin_Click" />
        </div>
    </form>
</body>
</html>

実行しようとすると、以下のエラーが発生します。

エラー 1 名前 ‘txtUsername’ は現在のコンテキストに存在しません
エラー 2 名前 ‘txtPassword’ は現在のコンテキストに存在しません
エラー 3 名前 ‘loginForm’ は現在のコンテキストに存在しません

私が間違っていることを助けてください。

解決策 1

何もない エラーが見つかりました。 すべてが順調です。
コードビハインド ID を変更するだけです (txtUsername)

前のコード

C#
protected void btnLogin_Click(object sender, EventArgs e)
   {
       {
           // build UID string
           String uid = "uid=" + txtUsername.Text + ",ou=people,dc=example,dc=com";

現在のコード

C#
protected void btnLogin_Click(object sender, EventArgs e)
   {
       {
           // build UID string
           String uid = "uid=" + txtUserName.Text + ",ou=people,dc=example,dc=com";

HTML
why are your write inline same cs code, where you used separate cs file

解決策 2

<%@ ページ言語="C#"
AutoEventWireup=”true”
CodeFile=”Default.aspx.cs”
Inherits=”add_your_solution_name.ldapLogin”
%>
プロジェクト aspx ファイル タグをこのフォームに取得します

コメント

タイトルとURLをコピーしました