For my web app i have flash component for uploading files. I would like to handle max file size limit on client side without actual sending that file to server. So i need to read that value from config file somehow to send it to client. Some articles i had found said that reading directly config file is not solution, because it can be changed in whole lot of places. So there should be some API call probably, but i cannot find any...
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1048576" />
</requestFiltering>
</security>
</system.webServer>
Try this way
You can change the below segment of code based on the web configuration in the config file
My web.config some look like
<system.web>
<httpRuntime executionTimeout="30" maxRequestLength="100"/>
Here you can see maxRequestLength
is defined as 100 which can be changed from code behind page
Add using System.Web.Configuration;
Now write this code to change the value of maxRequestLength
Configuration configuration = WebConfigurationManager.OpenWebConfiguration("~");
HttpRuntimeSection httpruntinesec =
(HttpRuntimeSection)configuration.GetSection("system.web/httpRuntime");
You can use httpruntinesce instance set the value.
I know it is an old question, but it cost me so much time (wasted) that I felt like posting a working solution for those who might come in my path:
Using Microsoft.Web.Administration;
uint uiMaxAllowedContentLength = 0;
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetWebConfiguration("Default Web Site/{{your special site}}");
ConfigurationSection requestFilteringSection = config.GetSection("system.webServer/security/requestFiltering");
ConfigurationElement requestLimitsElement = requestFilteringSection.GetChildElement("requestLimits");
object maxAllowedContentLength = requestLimitsElement.GetAttributeValue("maxAllowedContentLength");
if (null != maxAllowedContentLength)
{
uint.TryParse(maxAllowedContentLength.ToString(), out uiMaxAllowedContentLength);
}
}
Make sure that you first download and install the Microsoft Web Administration package (
PM> Install-package Microsoft.Web.Administration
)
Also, you might need to adjust permission to your web.config file. Give IUSR and IIS_IUSRS at least "Read" permission.
The code is actually from Microsoft site, though to find it took forever! Hopefully I have saved you couple of hours.
Cheers,
Roman
Without Microsoft Web Administration package:
using System.Web.Configuration;
using System.Configuration;
using System.Xml;
using System.IO;
Configuration configuration = WebConfigurationManager.OpenWebConfiguration("~");
IgnoreSection ignoreSection = configuration.GetSection("system.webServer") as IgnoreSection;
string sectionXml = ignoreSection.SectionInformation.GetRawXml();
StringReader stringReader = new StringReader(sectionXml);
XmlTextReader xmlTextReader = new XmlTextReader(stringReader);
UInt32 maxAllowedContentLength = 0;
if(xmlTextReader.ReadToDescendant("requestLimits"))
UInt32.TryParse(xmlTextReader.GetAttribute("maxAllowedContentLength"), out maxAllowedContentLength);
来源:https://stackoverflow.com/questions/8443574/how-to-read-maxallowedcontentlength