Active Directory との間で読み取り/書き込みを行う Web アプリケーションを作成しました。私のweb.configファイルには
<identity impersonate="true"/>
と
<authentication mode="Windows"/>
表示すると
System.Web.HttpContext.Current.User.Identity.Name
一部のラベルでは と表示されているmydomain\myusername
ので、なりすましが機能すると思います。
今質問に。IIS Web サーバーが実行されているサーバー上のアプリケーションにアクセスすると、すべてがうまく機能します。しかし、リモート PC から Web アプリケーションにアクセスすると、例外が発生します (ラベルにはまだ「mydomain\myusername」と表示されます)。
問題を追跡しました。私が呼び出すときのコードビハインド
Forest currentForest = Forest.GetCurrentForest();
変数はその、またはをcurrentForest
知っていますが、 、またはを呼び出すと、currentForest.Name
currentForest.RootDomain
currentForest.ForestMode
currentForest.Domains
currentForest.Sites
currentForest.GlobalCatalogs
System.DirectoryServices.ActiveDirectory.ActiveDirectoryOperationException.
今、私は道に迷っており、さらに何をデバッグすればよいかわかりません。私が使用しているアカウントは、Enterprise Admins (マルチドメイン フォレスト) のメンバーです。IIS バージョン (IIS 7.5 と IIS 6.0) が異なる 2 つのサーバーで試しましたが、うまくいきませんでした。
そして、スローされた例外はあまり役に立ちません:
例外の詳細: System.DirectoryServices.DirectoryServicesCOMException: 操作エラーが発生しました。
ソース エラー: 現在の Web 要求の実行中に未処理の例外が生成されました。例外の発生元と場所に関する情報は、以下の例外スタック トレースを使用して特定できます。スタック トレース:
DirectoryServicesCOMException (0x80072020): 操作エラーが発生しました。System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail) +557
System.DirectoryServices.DirectoryEntry.Bind() +44
System.DirectoryServices.DirectoryEntry.get_AdsObject() +42
System.DirectoryServices.DirectorySearcher.FindAll(Boolean findMoreThanOne) +98
システム。 DirectoryServices.ActiveDirectory.ADSearcher.FindAll() +46
System.DirectoryServices.ActiveDirectory.Forest.GetDomains() +543[ActiveDirectoryOperationException: 操作エラーが発生しました。]
System.DirectoryServices.ActiveDirectory.Forest.GetDomains() +512484
System.DirectoryServices.ActiveDirectory.Forest.get_Domains() +44
myWebApp.ASPpage.Button_Click(オブジェクト送信者、EventArgs e) in C:\Documents and Settings\myUser\documents\ visual studio\Projects\MyWebApp\MyWebApp\ASPPage.aspx.cs:158
System.Web.UI.WebControls.Button.OnClick(EventArgs e)
+115 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +140
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +29
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2981
編集:currentForest.Domains
明らかでない場合は、UPN 名で指定されたユーザーをフォレスト全体 (すべてのドメイン) で検索するために使用したいと考えています。