我想更改IIS的全局配置,以便将查询字符串限制(默认值2048)更改为更高的值(如4096)。我知道如何实现它使用IIS管理器,但我想有C#代码,将这样做。我查看了全局配置的结构(C:\Windows\System32\inetsrv\configure\applicationHost.config),发现我需要创建或修改system.webServer/security/requestLimits/requestFiltering并将maxQueryString更改为4096。然而,每一次这样做的尝试都失败了。
对于下面的所有内容,appHostConfig是server.GetApplicationHostConfiguration,server是一个Servermanager,而server.commitchanges就位于下面。
我第一次尝试
ConfigurationSection rFSection = appHostConfig.GetSection("system.webServer/security/requestFiltering");
ConfigurationElementCollection rfCollection = rFSection.GetCollection();
ConfigurationElement rfElement = rfCollection.CreateElement("requestLimits");
rfElement["maxQueryString"] = "4096";
rfCollection.Add(rfElement);
但这引发了System.NullReferenceException Object reference not set to an instance of an object.
然后我试
ConfigurationSection rFSection = appHostConfig.GetSection("system.webServer/security/requestFiltering");
ConfigurationElement rfElement;
try
{
rfElement = rFSection.GetChildElement("requestLimits");
} catch
{
rfElement = rFSection.GetCollection().CreateElement("requestLimits");
}
rfElement["maxQueryString"] = "4096";
rFSection.GetCollection().Add(rfElement);
但这引发了System.InvalidCastException Specified cast is not valid.
我使用.NET 4.8
我现在不知道如何做到这一点,所以任何帮助都将不胜感激。先谢谢你了。
1条答案
按热度按时间sg24os4d1#
我解决了这个问题。当它是一个有属性的元素时,我把它当作一个集合来处理。这是代码:
这件事的寓意是:在浪费三个小时尝试使用配置原理图之前,