8

ServerManager クラス (Microsoft.Web.Administration から) を使用して、IIS 7 を実行しているサーバー上にアプリケーションを作成しています。ルート サイトの設定を変更するよう IT に依頼します。アプリケーションのコンテンツはサード パーティに属しているため、アプリケーション内の web.config ファイルを変更することはできません。

Application クラスは有用なプロパティを公開していませんが、ServerManager の GetApplicationHostConfiguration メソッドを使用して何かできるのではないでしょうか?

4

1 に答える 1

13

サイトの Internet Information System 構成を変更したいようです。それが正しければ、次のようなものが機能するはずです:

using (ServerManager serverManager = new ServerManager())
{
    Configuration config = serverManager.GetWebConfiguration("Contoso");
    ConfigurationSection authorizationSection = config.GetSection("system.webServer/security/authorization");
    ConfigurationElementCollection authorizationCollection = authorizationSection.GetCollection();

    ConfigurationElement addElement = authorizationCollection.CreateElement("add");
    addElement["accessType"] = @"Allow";
    addElement["roles"] = @"administrators";
    authorizationCollection.Add(addElement);

    serverManager.CommitChanges();
 }

上記のコードを使用すると、グループ内の特定のユーザーが特定のサイトにアクセスできるようにする承認規則を作成できます。この場合、サイトは Contoso です。

これにより、サイトの匿名認証が無効になります。次に、サイトの基本認証と Windows 認証を有効にします。

using(ServerManager serverManager = new ServerManager()) 
{ 
    Configuration config = serverManager.GetApplicationHostConfiguration();

    ConfigurationSection anonymousAuthenticationSection = config.GetSection("system.webServer/security/authentication/anonymousAuthentication", "Contoso");
    anonymousAuthenticationSection["enabled"] = false;

    ConfigurationSection basicAuthenticationSection = config.GetSection("system.webServer/security/authentication/basicAuthentication", "Contoso");
    basicAuthenticationSection["enabled"] = true;

    ConfigurationSection windowsAuthenticationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Contoso");
    windowsAuthenticationSection["enabled"] = true;

    serverManager.CommitChanges();
}

または、必要に応じて IIS マネージャー ユーザー アカウントを追加することもできます。これらの他のアプリケーションを操作および管理するための特定の権限に設定できます。

using (ServerManager serverManager = new ServerManager())
{
    Configuration config = serverManager.GetAdministrationConfiguration();

    ConfigurationSection authenticationSection = config.GetSection("system.webServer/management/authentication");
    ConfigurationElementCollection credentialsCollection = authenticationSection.GetCollection("credentials");
    ConfigurationElement addElement = credentialsCollection.CreateElement("add");
    addElement["name"] = @"ContosoUser";
    addElement["password"] = @"P@ssw0rd";
    addElement["enabled"] = true;
    credentialsCollection.Add(addElement);

    serverManager.CommitChanges();
}

Internet Information System には多くの柔軟性があります。その非常に強力です。そこからの参照によるドキュメントも非常に詳細です。例は、特定の使用法に適応させるにはまったく不適切であり、少なくとも、必要なことを行うための理解のレベルを提供することはできません。

うまくいけば、これらの例はここから来ました:

于 2012-12-13T00:17:01.567 に答える