IIS错误:无法识别的配置路径'MACHINE / WEBROOT / APPHOST / websiteName

时间:2017-05-23 11:28:49

标签: c# asp.net iis

我正在尝试在c#代码中设置 IP地址和域名限制,我正在关注this文章,但这会让我无法识别位置错误。

  

错误:无法识别的配置路径'MACHINE / WEBROOT / APPHOST / websiteName

我的代码:

using (var serverManager = new ServerManager())
            {
                var config = serverManager.GetApplicationHostConfiguration();
                var ipSecuritySection = config.GetSection("system.webServer/security/ipSecurity", "websiteName");
                var ipSecurityCollection = ipSecuritySection.GetCollection();

                var addElement = ipSecurityCollection.CreateElement("add");
                addElement["ipAddress"] = @"SomeIP";
                addElement["allowed"] = false;
                ipSecurityCollection.Add(addElement);

                var addElement1 = ipSecurityCollection.CreateElement("add");
                addElement1["ipAddress"] = @"SomeIP";
                addElement1["subnetMask"] = @"255.255.0.0";
                addElement1["allowed"] = false;
                ipSecurityCollection.Add(addElement1);

                serverManager.CommitChanges();

            }

在这一行之后它给了我错误:

  

var ipSecuritySection = config.GetSection(“system.webServer / security / ipSecurity”,“websiteName”);

任何人都可以说出错了,或者我错过了什么。

2 个答案:

答案 0 :(得分:0)

对于IIS / IIS Express,您可能会遇到一个损坏的applicationHost.config,其中该网站无法拥有根应用程序。如果您不知道如何编辑,请在问题中发布文件的<sites>标记,以便其他人可以查看并建议如何修复。

答案 1 :(得分:0)

老化问题,但我想我会分享我的解决方案。

location参数必须与applicationHost.config文件中的位置路径匹配。这意味着如果websiteName实际上是另一个站点下的应用程序,例如默认网站,其位置部分将如下所示:

<location path="Default Web Site/websiteName">
    <system.webServer>
      <.../> 
    </system.webServer>
</location>

如果是这样,你的第5行应如下所示:

var ipSecuritySection = config.GetSection("system.webServer/security/ipSecurity", "Default Web Site/websiteName");