我发布了一个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秒,就无法上传。
我的问题是:发布实时网站以进行调试“false”的设置是否正确?另外,requestValidationMode =“2.0”仍然可以安全使用,考虑到asp.net现在是版本4(很快就会是4.5)?
答案 0 :(得分:3)
Validationmode 2.0不是框架版本,可以保持这样。
把debug = false,你很好。
答案 1 :(得分:2)
requestValidationMode ...据我所知,如果要在请求数据中允许特殊字符(&lt;,&gt;,%等),则将设置为2.0完全传递ASP.NET的请求验证。 requestValidationMode =“2.0”表示“仅强制对页面进行验证(即.aspx),而不是对每个请求进行验证(如4.0中所述)。这允许ASP.NET MVC接管验证 - 因此也可以让你关闭特定的请求。
安全吗?如果您已确保已应用[ValidateInput(false)]
的所有操作或控制器或具有[AllowHtml]
的模型已正确抵御攻击,那么就是这样。 Imran Baloch有一个完整的解释here。
是的,调试应该是“假”,原因有几个,包括性能和内存使用情况。此外,debug =“true”会将静态文件的默认缓存策略更改为永远不会在浏览器中缓存文件,这意味着需要大量冗余的脚本请求,CSS等。
对于图像上传,除了给出的建议之外,请在事件查看器中检查由于某种原因而不是应用程序池回收,而不是执行超时。