我用C#编写了一个COM组件用于进行AD域认证,代码如下:
namespace CSLib
{
public interface ISQLInterop
{
string ADLogin( string sPath, string sAcc, string sPwd );
} [ClassInterface(ClassInterfaceType.AutoDual)] 
public class SQLInterop : ISQLInterop
{
public SQLInterop()
{
}
#region ISQLInterop 成员 public string ADLogin( string sPath, string sAcc, string sPwd )
{
DirectoryEntry de = new DirectoryEntry ( sPath, sAcc, sPwd );
try
{
string sName = de.Name;
return "";
}
catch (Exception e)
{
return e.Message;
}
} #endregion
}
}
然后我用ASP来测试这个组件:
<%
set obj = Server.CreateObject("CSLib.SQLInterop")
Response.Write obj.ADLogin("LDAP://ADServer/DC=sd,DC=ctc,DC=com", "test", "test123")
%>
客户端IE输入ASP地址后就打印“未知的身份验证机制”但是我直接将AD域认证的代码做成aspx页面就能成功,下面是页面代码:
namespace TestWebApp
{
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.TextBox acc;
protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.TextBox pwd;
protected System.Web.UI.WebControls.Label result;
protected System.Web.UI.WebControls.Button Button1;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}

private void InitializeComponent()
{    
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void Button1_Click(object sender, System.EventArgs e)
{
try
{
DirectoryEntry de = new DirectoryEntry ("LDAP://ADServer/DC=sd,DC=ctc,DC=com", acc.Text, pwd.Text);
result.Text = de.Name;
}
catch (Exception ex)
{
result.Text = ex.Message;
}
}
}
}
请问这是什么原因,我估计是COM组件调用时的权限问题,我已经研究了一天了,各位大侠救命啊!!!