我在网站上的几个地方都有帮助文本,告诉用户允许的最大文件上传大小是多少。我希望能够使它动态化,这样,如果我更改了web.config文件中的请求限制,就不必在很多地方更改表单说明。使用ConfigurationManager或其他工具可以做到这一点吗?
答案 0 :(得分:0)
由于您没有提供更多详细信息,所以:here指出,您有2个选项可以为整个应用程序设置大小限制。
取决于您需要采取一些不同的方法:
如果您使用<httpRuntime maxRequestLength="" />
,则可以通过WebConfigurationManager
//The null in OpenWebConfiguration(null) specifies that the standard web.config should be opened
System.Configuration.Configuration root = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(null);
var httpRuntime = root.GetSection("system.web/httpRuntime") as System.Web.Configuration.HttpRuntimeSection;
int maxRequestLength = httpRuntime.MaxRequestLength;
在Priciple中,您应该可以对<requestLimits maxAllowedContentLength="" />
执行相同的操作。但是WebConfigurationManager中的system.webServer
-Section被声明为IgnoreSection,无法访问。可以在application.config或类似的IIS中更改此行为。但是由于(就我而言).SectionInformation.GetRawXml()
都失败了,所以我倾向于宣布这是一个失败的案例。
在这种情况下,我的解决方案是手动访问Web.config-File:
var webConfigFilePath = String.Format(@"{0}Web.config", HostingEnvironment.MapPath("~"));
XDocument xml = XDocument.Load(System.IO.File.OpenRead(webConfigFilePath));
string maxAllowedContentLength = xml.Root
.Elements("system.webServer").First()
.Elements("security").First()
.Elements("requestFiltering").First()
.Elements("requestLimits").First()
.Attributes("maxAllowedContentLength").First().Value;
@Roman here使用Microsoft.Web.Administration.ServerManager
,为此您需要Microsoft.Web.Administration Package