2011-05-19 19 views
1

Windows WebサーバーでIIS 6.0を実行しているリモートWebサーバー上のアプリケーションプールを再起動する.NET Webアプリケーションを作成しようとしています。アクセス権の問題。iisアプリケーションプールをリサイクルするネットワークサービスを許可する

string appPoolPath = ConfigurationSettings.AppSettings["ApplicationPool"]; 

string systemId = System.Security.Principal.WindowsIdentity.GetCurrent().Name; 

try 
{ 

    DirectoryEntry svc = new DirectoryEntry(appPoolPath); 
    svc.Invoke("Recycle"); 
    LabelResult.Text = "Application Pool Recycled Succesfully!"; 
    LabelResult.Visible = true; 
} 
catch(Exception exc) 
{ 

    LabelResult.Text = "Error (" + systemId + "): " + exc.Message + " : " + exc.InnerException; 

    LabelResult.Visible = true; 
} 

私は、コードを実行すると、私は次のエラーを取得する:

エラー(NT AUTHORITY \ NETWORK SERVICE):例外が呼び出しのターゲットによってスローされました。 :System.UnauthorizedAccessException:アクセスが拒否されました。 (HRESULTからの例外:0x80070005(E_ACCESSDENIED))

私の質問は、どのようにアカウントに完全な管理者権限を与えずにリサイクルを呼び出すためのNETWORK SERVICEアカウントの権限を与えることができますか?出来ますか?

これを解決するもう1つの方法は、サーバー上の既存の管理者の1人を偽装することですが、これを行うことはできません。マシン上でユーザーを作成できず、既存のユーザーアカウントのログイン資格情報を取得できません。

答えて

1

別のオプション:

あなたはこれは完全に真実ではありませんプール

1

を再起動します/ binディレクトリにダミーファイルを入れて、毎回それを更新。 あなたはweb.configファイルセクション必要があります:あなたはTest.configを変更する場合

<section name="TestSection" restartOnExternalChanges="true" requirePermission="false" type="System.Configuration.AppSettingsSection, System.Configuration"/> 

<TestSection configSource="Test.config"></TestSection> 

を次に、アプリケーションプールがリサイクルされます。

0

削除してアプリケーションプールを作成してください。私の問題を解決しました。

var server = new ServerManager(); 
var pool = server.ApplicationPools.FirstOrDefault(q => q.Name == "MyPool"); 
if (pool != null) 
{ 
    server.ApplicationPools.Remove(pool); 
    server.CommitChanges(); 

    server.ApplicationPools.Add("MyPool"); 
    server.CommitChanges(); 
} 
関連する問題