我正在做一个ASP.NET MVC3 web应用程序(不是我写的),最大上载大小为100MB.现在,这个web应用程序被安装在客户的服务器上,所以如果每个客户都可以配置这个值max upload size,那就太好了.他们有权编辑网页.如果需要,请为web应用程序配置.

现在网络有了价值.这样配置:

<system.webServer>
    <security>
        <requestFiltering>
            <requestLimits maxAllowedContentLength="104857600" />
        </requestFiltering>
    </security>
</system.webServer>

这里还有一个类似的值:

<system.web>
    <httpRuntime maxRequestLength="104857600" executionTimeout="360" />
</system.web>

104857600字节似乎是public const double MaxContentSize = 104857600MB的文件上传限制.然而,在更改值时,我发现这不是权威值,也没有遵守新的限制.因此,在进一步挖掘之后,我在C代码的其他地方发现了一个硬编码值public const double MaxContentSize = 104857600,另一个C方法使用该值来接受/拒绝Ajax文件上传.

所以我想我要做的是替换代码中的硬编码数字,这样它就能从网络中读取值.配置.那么,至少任何人都可以在网络上改变这种价值观.当他们部署网站时进行配置.

你能做这样的事吗?

MaxContentSize = ConfigurationManager.systemWeb.httpRuntime['maxRequestLength'];

我在网上看到了一些使用appSettings的例子.配置,例如.

<appSettings><add key="MySetting" value="104857600" /></appSettings>

然后访问它,如下所示:

ConfigurationManager.AppSettings["MySetting"]

但这意味着在其中添加一个自定义值,现在我们有3个地方可以在web上更改它.配置.有人知道怎么做吗?

非常感谢

推荐答案

您可以执行以下操作:

int maxRequestLength = 0;
HttpRuntimeSection section =
ConfigurationManager.GetSection("system.web/httpRuntime") as HttpRuntimeSection;
if (section != null) 
    maxRequestLength = section.MaxRequestLength;

Asp.net相关问答推荐

Azure Service Fabric 是否与 Docker 做同样的事情?

HttpWebRequest 未通过凭据

__doPostBack 未定义

在 Blazor 中 Select 框绑定

是否有用于 Asp.net 标记的#IF DEBUG?

如何配置 ASP.NET Core 1.0 以使用本地 IIS 而不是 IIS Express?

System.Web.MVC 自 MS14-059 以来未复制到 bin 文件夹中.如何防止由于 Windows 更新而创建缺少 DLL 的构建?

HttpModules 的执行顺序是如何确定的?

在 Android/Java 和 C# 中计算 SHA256 哈希

如何在 ASP.net 中使用 wkhtmltopdf.exe

HttpContext.Current 在 MVC 4 项目中未解决

如何验证 WebClient 请求?

ASP.Net 错误:应用程序池的标识无效

如何将我的 Autofac 容器插入 ASP. NET 身份 2.1

在 ASP.NET 标识中添加角色

URL 路由、图像处理程序和潜在危险的 Request.Path 值

如何response.write bytearray?

使用 ConfigurationManager.RefreshSection 重新加载配置而不重新启动应用程序

在 ASP.NET Web API 2 中禁用 *all* 异常处理(为我自己腾出空间)?

在 Visual Studio 2013 中更改项目端口号