使用Microsoft Web Administration C#在单个服务级别上设置Windows身份验证

时间:2018-10-24 14:54:44

标签: c# iis servermanager

在您当前面临的问题上需要您的指导。 我们有一个Web应用程序,该应用程序的子目录下有一些asp.net Web服务(asmx)。 每当我们在应用程序级别配置Windows身份验证时,我都希望此设置将继承到子目录中的所有asmx服务。但是他们仍然将其身份验证模式显示为匿名身份验证。 在这种状态下,当我尝试访问Web服务时,会收到401.2未经授权的异常。 我必须将服务的身份验证模式手动更改为Windows才能访问该Web服务。 我们也在尝试使用Microsoft.Web.Administration dll来实现此自动化。我们正在使用

Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection anonymousAuthenticationSection =
                    config.GetSection("system.webServer/security/authentication/anonymousAuthentication", siteName);

在上面的代码中,siteName变量包含应用程序的路径,例如website / app 有人可以告诉我如何使用ServerManager API在asmx服务级别设置Windows身份验证吗?

1 个答案:

答案 0 :(得分:0)

我终于找到了解决此问题的方法。 应用程序主机配置文件包含每个服务或文件夹的单独条目。因此,如果子目录中有多个服务,则必须为单个服务或子目录提供适当的路径。 因此,代码将像这样

Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection anonymousAuthenticationSection =
                    config.GetSection("system.webServer/security/authentication/anonymousAuthentication", siteName);

在上面的示例中,只需将站点名称替换为服务名称或应用程序下任何子目录的路径即可。需要对应用程序下的所有子目录执行此操作。