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

Set windows authentication at individual service level using Microsoft web Administration C#

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

来自动执行此操作
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection anonymousAuthenticationSection =
                    config.GetSection("system.webServer/security/authentication/anonymousAuthentication", siteName);

在上面的代码中,siteName 变量包含应用程序的路径,如 website/app 谁能告诉我如何使用 ServerManager api 在 asmx 服务级别设置 windows 身份验证?

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

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

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