【问题标题】:ASP.NET MVC3 Publish settings in web.configASP.NET MVC3 在 web.config 中发布设置
【发布时间】:2012-01-25 19:08:26
【问题描述】:

我发布了一个 ASP.NET MVC3 站点。它运行良好。但是,回顾我的 web.config 文件,我不确定我使用的某些值对于发布和开发是否正确。这些配置位于<system.web> 部分。

...
    <system.web>
    <httpRuntime requestValidationMode="2.0" executionTimeout="200" maxRequestLength="20000000"/>
    <compilation debug="true" targetFramework="4.0">
...

我在这里 (http://msdn.microsoft.com/en-us/library/e1f13641.aspx) 读到,在编译中使用 debug=true 将忽略 200 的 executionTimeout,并使用默认值 110。这似乎是这种情况,并且该站点设置为允许非常大的数量要一次全部上传的文件。但是,只有 110 秒,无法上传太多内容。

我的问题是:发布实时站点以进行调试“假”的正确设置是什么?此外,考虑到 asp.net 现在是版本 4(即将是 4.5),requestValidationMode="2.0" 仍然可以安全使用吗?

【问题讨论】:

  • 当调试为真时,没有执行超时。发布时应始终将 debug 设置为 false,如果需要比默认时间更长的时间,则应显式设置 executionTimeout。
  • 是的,我意识到上传实际上正在发生,但在其他地方存在瓶颈。我正在尝试一次上传 9MB 的图片,但是一旦上传就不会了。如果我分开做,它会起作用,但不是一次。
  • 您使用的是 IIS 7+ 吗?如果是这样,请确保请求过滤 maxAllowedContentLength 未配置为低。我认为默认值相当大....
  • @dotjoe 我不这么认为,我可以上传 3 张总共 15 MB 的图片,但不能上传 4 张总共 400kb 的图片。
  • 是的,在 iis 7 特定的 system.webServer...iis.net/ConfigReference/system.webServer/security/…

标签: asp.net asp.net-mvc-3 web-config


【解决方案1】:

Validationmode 2.0 不是框架版本,可以保持这样。

设置 debug=false 就可以了。

【讨论】:

    【解决方案2】:

    requestValidationMode... 据我所知,如果您想允许请求数据中的特殊字符(、% 等)通过,则此 必须 设置为 2.0 ASP.NET 的请求验证。 requestValidationMode="2.0" 表示“仅在页面(即 .aspx)上强制验证,而不是在 每个 请求(如 4.0 中引入)。这允许 ASP.NET MVC 接管验证 -因此还可以让您针对特定请求关闭它。

    安全吗?如果您已确保应用了[ValidateInput(false)] 的任何操作或控制器或带有[AllowHtml] 的模型已得到适当保护以免受攻击,则它是。 Imran Baloch 有完整的解释here

    是的,调试应该是“假”的,原因有几个,包括性能和内存使用。此外,debug="true" 将静态文件的默认缓存策略更改为从不在浏览器中缓存文件,这意味着对脚本、CSS 等的大量冗余请求。

    至于图片上传,除了给出的建议外,在事件查看器中检查它不是出于某种原因而真正的应用程序池回收,而不是执行超时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-10
      相关资源
      最近更新 更多