ASP.NET-在运行时确定最大文件上传大小

时间:2018-08-07 21:52:54

标签: asp.net configurationmanager

我在网站上的几个地方都有帮助文本,告诉用户允许的最大文件上传大小是多少。我希望能够使它动态化,这样,如果我更改了web.config文件中的请求限制,就不必在很多地方更改表单说明。使用ConfigurationManager或其他工具可以做到这一点吗?

1 个答案:

答案 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

提出了另一种解决方案