.Net4.0 Web.config 配置实践

打印 上一主题 下一主题

主题 533|帖子 533|积分 1599

目录
关于 Web.config
运行环境
配置实践
请求验证模式兼容旧版本
上传文件限制
Request.Path伤害值配置
全站应用UTF-8编码
设置日期格式
每个会话的限制并发请求数
正常运行指定扩展名的文件
Json字符串超出最大长度限制
控件早期版本的呈现方式
C# 操纵 Web.config
小结


关于 Web.config

当通过.NET 新建一个Web应用程序项目后,默认情况下会在根目录自动创建一个默认的Web.config文件,其是一个XML文本文件,内容包括运行应用默认的所有运行根本配置。
除根目录外,可以每个要特殊配置的子目录下新建一个Web.config文件。它可以在继承父目录的配置信息以外,可以自界说重写或修改父目录中界说的设置。
在应用运行时对 Web.config 文件的修改不需要重启服务就可以收效,因此请注意准确的修改内容,否则会引起应用站点非常并报错。
Web.config 文件可以自界说配置进行扩展,通过自界说配置参数,满意我们日常对应用程序的别的配置需求。
运行环境

操纵系统: Windows Server 2019 DataCenter
.net版本: .netFramework4.0 或以上
编辑工具:VS2019 或别的任何文本编辑器
配置实践

请求验证模式兼容旧版本

请求验证模式界说了如何处理客户端请求中的输入内容的安全性,我们运行的是 .netFrameword 4.7.1 版本,为包管兼容性,最好配置
  1. <system.web>
  2. <httpRuntime  requestValidationMode="3.5"  />
  3. </system.web>
复制代码
上传文件限制

这是经常用到和遇到的一个问题,对于默认配置 maxRequestLength 一样寻常仅允许上传不超过4Mb的文件,我们可以通过修改下列配置节:
  1. <system.web>
  2.     <httpRuntime  maxRequestLength="20480000"  />
  3. </system.web>
复制代码
我们还可以配置些节点:
  1. <system.webServer>
  2.     <security>
  3.       <requestFiltering>
  4.         <requestLimits maxAllowedContentLength="2147483647" />
  5.       </requestFiltering>
  6.     </security>
  7. </system.webServer>
复制代码
如果不起作用还可以配置如下节(如果存在):
  1. <aspnetUploadSettings>
  2.     <add key="maxRequestLength" value="20480000" />
  3. </aspnetUploadSettings>
复制代码
Request.Path伤害值配置

在页面处理输入时,我们会遇到客户端(&)中检测到有埋伏伤害的 Request.Path 值错误 (即包罗一些被认为是伤害的字符输入,如脚本标记等),如果我们有需要关闭此功能时,可以在应用页面头部参加如下配置:
  1. <%@ Page Language="C#"  ValidateRequest="FALSE"  %>
复制代码
Web.config 文件里我们可以配置如下:
  1. <system.web>
  2.     <httpRuntime requestPathInvalidCharacters="" />
  3. </system.web>
复制代码
全站应用UTF-8编码

目前utf-8编码是广泛应用的一种编码,我们可以默认配置如下节:
  1. <system.web>
  2.     <globalization requestEncoding=”utf-8″ responseEncoding=”utf-8″ fileEncoding="utf-8" />
  3. </system.web>
复制代码
也可以单独为某页面配置编码,如下示例:
  1. <location path="cc/test.aspx">
  2.     <system.web>
  3.       <globalization requestEncoding="gb2312" responseEncoding="gb2312"  fileEncoding="gb2312"/>
  4.     </system.web>
  5. </location>
复制代码
设置日期格式

某些情况我们需要对日期格式进行符合自己应用的标准化格式输出,如 2024-04-22的日期格式,我们会发现从数据库提取的日期格式未必如预期那样,即使配置了数据库格式及WINDOWS环境日期格式,仍旧不能按照预期显示,那么我们可以实验在 Web.config <appSettings>配置节添加如下key:
  1. <appSettings>
  2.     <add key="ShortDatePattern" value="yyyy-MM-dd" />
  3. </appSetttings>
复制代码
请注意 yyyy-MM-dd 是区分大小写的。更多配置可以参考如下链接:
https://learn.microsoft.com/zh-cn/previous-versions/bb688124(v=msdn.10)?redirectedfrom=MSDN
我们发现有时配置了此节会有失效的情况,可以打开 Web.config 文件,任意改动一下,再生存一下理论上就能规复正常的日期显示了。
每个会话的限制并发请求数

这是为了办理 .NET Framework 4.7、4.7.1 和 4.7.2 中引入的应用兼容性问题,可以在 Web.config <appSettings>配置节添加如下key:
  1. <appSettings>
  2.     <add key="aspnet:RequestQueueLimitPerSession" value="2147483647"/>
  3. </appSetttings>
复制代码
更多详情请参考如下链接:
有关迁徙到 .NET Framework 4.7.x 的操纵的重定向目标更改 
正常运行指定扩展名的文件

在我们运行的一些应用中,需要运行 mp4 文件,发现运行时出现错误,我们可以参加对该扩展名的支持,如下配置:
  1. <system.webServer>
  2.    <staticContent>
  3.       <remove fileExtension=".mp4" />
  4.       <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
  5.    </staticContent>
  6. </system.webServer>
复制代码
请注意 remove 节,是一种比较稳妥和兼容的写法,否则可能未必能够达到您的预期。
Json字符串超出最大长度限制

在处理Json字符串序列化的时候,可能会遇到字符串超过长度限制的错误,我们可以配置如下节:
  1. <system.web.extensions>
  2.     <scripting>
  3.       <webServices>
  4.         <jsonSerialization maxJsonLength="204800"/>
  5.       </webServices>
  6.     </scripting>
  7. </system.web.extensions>
复制代码
控件早期版本的呈现方式

指定控件应以 ASP.NET 的早期版本中的呈现方式,可以设置为3.5(最低版本),如下配置:
  1. <system.web>
  2.     <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
  3.       <controls>
  4.         <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  5.       </controls>
  6.     </pages>
  7. </system.web>
复制代码
这是Pages的通用设置方法,更多信息请参考如下链接:
https://learn.microsoft.com/zh-cn/previous-versions/950xf363(v=vs.110)?redirectedfrom=MSDN
C# 操纵 Web.config

appSettings节是我们经常自界说变量配置的节,在此我们分享 C# 一个appSettingsEdit方法,可以动态的配置指定的变量及值,其参数见下表:
序号参数名类型说明1WebConfigDirectorystringWeb.config文件所在的目录(不包罗文件名)2appSettingsAddkeystring要在 appSettings 节中添加的键值 Key 名称3keyvaluestring要在 appSettings 节中添加的键值 Key 的值 Value
 方法代码如下:
 
  1. public bool appSettingsEdit(string WebConfigDirectory,string appSettingsAddkey,string keyvalue)
  2.                 {
  3.             
  4.                         try
  5.                         {
  6.                                 string path=WebConfigDirectory+"\\web.config";
  7.                                 XmlDocument xd=new XmlDocument();
  8.                                 xd.Load(path);
  9.                                 //如果没有appSetting,则添加
  10.                                 if(xd.SelectNodes("//appSettings").Count==0)
  11.                                 {
  12.                                         xd.DocumentElement.AppendChild(xd.CreateElement("appSettings"));
  13.                                 }
  14.                                 //判断节点是否存在,如果存在则修改当前节点
  15.                                 bool addNode=true;
  16.                                 foreach(XmlNode xn1 in xd.SelectNodes("/configuration/appSettings/add"))
  17.                                 {
  18.                                         if(xn1.Attributes["key"].Value==appSettingsAddkey)
  19.                                         {
  20.                                                 addNode=false;
  21.                                                 xn1.Attributes["value"].Value=keyvalue;
  22.                                                 // xn1.ParentNode.RemoveChild(xn1);
  23.                                                 break;
  24.                                         }
  25.                                 }
  26.                                 //当前节点不存在,则添加新节点
  27.                                 if(addNode)
  28.                                 {
  29.                                         //创建新节点
  30.                                         XmlNode xn2=xd.CreateElement("add");
  31.                                         //添加key
  32.                                         XmlAttribute xa=xd.CreateAttribute("key");
  33.                                         xa.Value=appSettingsAddkey;
  34.                                         xn2.Attributes.Append(xa);
  35.                                         //添加value
  36.                                         xa=xd.CreateAttribute("value");
  37.                                         xa.Value=keyvalue;
  38.                                         xn2.Attributes.Append(xa);
  39.                                         xd.SelectSingleNode("/configuration/appSettings").AppendChild(xn2);
  40.                                 }
  41.                                 //保存web.config
  42.                                 xd.Save(path);
  43.                                 return true;
  44.                         }
  45.                         catch
  46.                         {
  47.                                 return false;
  48.                         }
  49. }
复制代码
小结

一样寻常情况下请勿更改 Web.config 的文件名及扩展名,因为 .config 文件扩展名可防止 ASP.NET 下载相应文件。
更高级的父对象继承可以更改 %SystemRoot%\Microsoft.NET\Framework\<版本>\CONFIG 目录下的 Machine.config 和 Web.config 文件继承所有根本配置设置,此文件属于服务器配置级别,要高于单独的应用程序级别。
到此关于 Web.config 的配置我们就讲到这里,后续随着现实的应用我们会继承丰富本文章内容,感谢您的阅读,希望本文对您能有所帮助。



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

温锦文欧普厨电及净水器总代理

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表