私は、ADSIを使用してIISメタベースを照会するWebページ内でコードを実行しています。コードは次のと同じくらい簡単です:DefaultAppPoolはIISで特権昇格特権で実行されますか?
DirectoryEntry iisNode =
new DirectoryEntry("/LM/W3SVC/1/ROOT/MyAspWebsite-1-128886021498831845");
foreach (DirectoryEntry de in iisNode.Parent.Children)
{
System.Console.WriteLine(de.Name);
}
私はIIS7/W2K8上のDefaultAppPool下のページ/サイトを実行したときにこれが正常に動作します。しかし、私は自分のアプリケーションプールを作成し、デフォルトのアプリケーションプールと同じ性質を残したときに、このコードは、次のエラーで失敗します。
のDefaultAppPoolは特別な何の権限を持っているんCaught: System.Runtime.InteropServices.COMException
Failed to parse virtual directory:
/LM/W3SVC/1/ROOT/MyAspWebsite-1-128889542757187500
System.Runtime.InteropServices.COMException (0x80070005): Access is denied.
?私は何も書かれていないと思う。私は非デフォルトのアプリケーションプールでこれを動作させる必要がありますが、を使わずにを実行すると、ワーカープロセスの昇格された権限が与えられます。また、IIS7が実行されているマシン上のAdminを使って、DirectoryEntryコンストラクタのユーザ名とパスワードのパラメータを使用しようとしましたが、何も変更されませんでした。また、IIS6とW2K3上でが正常に動作することにも注意してください。
何か助けていただければ幸いです。
両方のアプリケーションプールが同じIDで実行されていることを確認してください。 – kemiller2002
はい、プロセスエクスプローラを見ると、両方ともNT AUTHORITY \ NETWORK SERVICEとして実行されており、どちらも整合性が「システム」です。 w3wp.exeの両方のインスタンスの詳細プロパティのプロセスエクスプローラの[セキュリティ]タブを見ると、それらのグループはまったく同じグループに属し、DefaultAppPoolはIIS APPPOOL \ DefaultAppPoolグループの一部です。カスタムアプリケーションプールはIIS APPPOOL \ CustomAppPoolグループに属します。 –
独自のapp-poolを作成したとしたら、新しいapp-poolを作成して既存のappを追加するだけですが失敗しますか?または、新しいアプリケーションプールに関連付けられたまったく新しいサイト(したがって、おそらくルート上のアプリ)を作成していますか? おそらく許可の問題は、パス/ LM/W3SVC/1/ROOT ...のサイトID 1への参照のためですか? – Aaron