2

我正在尝试使用以下代码对 IIS7 中的应用程序启用匿名访问:

ConfigurationSection config = server.GetWebConfiguration(webSiteName).GetSection("system.webServer/security/authentication/anonymousAuthentication", "/" + applicationName);
config.OverrideMode = OverrideMode.Allow;
config["enabled"] = true;

但是我收到了这个错误:

Failed: The request is not supported. (Exception from HRESULT: 0x80070032)

如何修改应用程序的匿名访问?

谢谢,ng93

4

1 回答 1

1

上面的代码是无效的,因为出于安全原因,该部分被锁定在 ApplicationHost.config 级别。在您尝试使用的代码中,它试图在 Web.config 中设置它。如果您真的想要,您首先需要从 GetApplicationHost 调用中请求它,设置 overrideMode,然后再次从 GetWebConfiguration 中获取该部分。但总而言之,我仍然建议在服务器级别设置该值,这样它就不会在 web.config 中被部署或其他机制意外更改。

所以要做到这一点,我建议这样做:

string webSiteName = "Default Web Site";
string applicationName = "MyApp";

using (ServerManager server = new ServerManager())
{
    ConfigurationSection config = server.GetApplicationHostConfiguration()
                                        .GetSection(@"system.webServer/security/
                                                     authentication/
                                                     anonymousAuthentication", 
                                                     webSiteName + "/" + applicationName);
    config.OverrideMode = OverrideMode.Allow;
    config["enabled"] = true;
    server.CommitChanges();
}
于 2013-11-18T17:51:45.300 回答