web.config 的 system.web 常用配置节介绍

作者:vkvi 来源:ITPOW(原创) 日期:2013-6-11
<system.web>
   <compilation debug="true"></compilation>
   <customErrors mode="Off"></customErrors>
   <authentication mode="Forms">
       <forms name="Cftea" path="/" defaultUrl="Default.aspx"></forms>
   </authentication>
   <httpRuntime maxRequestLength="200000" requestValidationMode="2.0" executionTimeout="600" enableVersionHeader="false"/>
   <pages validateRequest="false"></pages>
</system.web>
<system.webServer>
  <security>
      <requestFiltering>
            <requestLimits maxAllowedContentLength="200000000" />
      </requestFiltering>
  </security>
</system.webServer>

以上是一个 web.config 的 system.web 配置节中,我个人觉得需要修改的节,列出来便于部署的时候根据需要调整。

compilation 如果属性 debug="true" 表示打开调试,这将会输出更详细的错误信息,但性能也会略有小小的影响。根据需要决定是否开启。(一般部署成功后不开启)

customErrors 如何显示错误信息,如果 mode 是 Off 表示输出详细错误信息(不输出管理员配置的错误页),如果是 On 表示关闭详细错误信息(输出管理员配置的错误页),如果是 RemoteOnly 表示只有服务器显示详细错误信息(向客户端输出管理员配置的错误页,如果是本机查看,则输出详细错误信息)。

authentication 一般不是做 Windows 验证,所以一般需要 mode="Forms"。其子节点的配置也很重要,请参见:ASP.NET Membership 开发-同一域名不同应用程序冲突的情况

httpRuntime 的 maxRequestLength 表示最大能提交多少 KB 的数据,在做文件上传时特别要注意设置,注意单位是 KB。在 .NET 3.5 SP1 中,这个值最大为:2097151,而在  .NET 4.6.2 中我设置为:100000000 也没报错。executionTimeout 为页面执行超时,单位enableVersionHeader="false" 表示去掉输出标头“X-AspNet-Version:xxx”,这个去掉没有任何意义,只是那些搞安全测评的公司认为这不安全,非要喊删掉,其实哪里不安全嘛,照他这么说全世界所有的摄像头都不要打 Logo,因为一打 Logo 别人就知道你是什么品牌了,用的什么技术了,就更好攻击了,这太过了,但是为了不跟他们计较,就加上吧。

pagesvalidateRequest 是我最气愤的,一些做网站的懂都不懂,自己编程有漏洞怪微软,搞得微软默认状态下是禁止提交带 <、> 标签的文本,郁闷死,如果你是做内容管理系统,这个是必设置 validateRequest="false",因为提交的文章内容一般是超文本内容,这是含有 HTML 标签的,要允许提交 HTML 标签。如果是 .NET Framework 4.0 及以上版本,光设置这个还不够,还要在 httpRuntime 节中设置:requestValidationMode="2.0"。

maxAllowedContentLength 这个是指最大上传文件长度,单位为字节(真不统一啊,一会儿这个单位,一会儿那个单位),这个玩意儿,应该是后头冒出来的,以前好像没有,这个表示允许的文件大小,而 maxRequestLength 是整个请求的大小。

据说要让 maxAllowedContentLength 生效,还需要在 C:\Windows\System32\inetsrv\config\applicationhost.config 中配置如下:

将 overrideModeDefault 改为 Allow,我没改也生效了,奇怪。

相关文章