我正在尝试在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”);
任何人都可以说出错了,或者我错过了什么。
答案 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");