• .Net4.0 Web.config 配置实践


    目录

    关于 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 值错误 (即包含一些被认为是危险的字符输入,如脚本标记等),如果我们有需要关闭此功能时,可以在应用页面头部加入如下配置:

    <%@ 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 配置节添加如下key:

    1. <add key="ShortDatePattern" value="yyyy-MM-dd" />

    请注意 yyyy-MM-dd 是区分大小写的。更多配置可以参考如下链接:

    https://learn.microsoft.com/zh-cn/previous-versions/bb688124(v=msdn.10)?redirectedfrom=MSDN

    我们发现有时配置了此节会有失效的情况,可以打开 Web.config 文件,随便改动一下,再保存一下理论上就能恢复正常的日期显示了。

    每个会话的限制并发请求数

    这是为了解决 .NET Framework 4.74.7.1 和 4.7.2 中引入的应用兼容性问题,可以在 Web.config 配置节添加如下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. try
    4. {
    5. string path=WebConfigDirectory+"\\web.config";
    6. XmlDocument xd=new XmlDocument();
    7. xd.Load(path);
    8. //如果没有appSetting,则添加
    9. if(xd.SelectNodes("//appSettings").Count==0)
    10. {
    11. xd.DocumentElement.AppendChild(xd.CreateElement("appSettings"));
    12. }
    13. //判断节点是否存在,如果存在则修改当前节点
    14. bool addNode=true;
    15. foreach(XmlNode xn1 in xd.SelectNodes("/configuration/appSettings/add"))
    16. {
    17. if(xn1.Attributes["key"].Value==appSettingsAddkey)
    18. {
    19. addNode=false;
    20. xn1.Attributes["value"].Value=keyvalue;
    21. // xn1.ParentNode.RemoveChild(xn1);
    22. break;
    23. }
    24. }
    25. //当前节点不存在,则添加新节点
    26. if(addNode)
    27. {
    28. //创建新节点
    29. XmlNode xn2=xd.CreateElement("add");
    30. //添加key
    31. XmlAttribute xa=xd.CreateAttribute("key");
    32. xa.Value=appSettingsAddkey;
    33. xn2.Attributes.Append(xa);
    34. //添加value
    35. xa=xd.CreateAttribute("value");
    36. xa.Value=keyvalue;
    37. xn2.Attributes.Append(xa);
    38. xd.SelectSingleNode("/configuration/appSettings").AppendChild(xn2);
    39. }
    40. //保存web.config
    41. xd.Save(path);
    42. return true;
    43. }
    44. catch
    45. {
    46. return false;
    47. }
    48. }

    小结

    一般情况下请勿更改 Web.config 的文件名及扩展名,因为 .config 文件扩展名可防止 ASP.NET 下载相应文件。

    更高级的父对象继承可以更改 %SystemRoot%\Microsoft.NET\Framework\<版本>\CONFIG 目录下的 Machine.config 和 Web.config 文件继承所有基础配置设置,此文件属于服务器配置级别,要高于单独的应用程序级别。

    到此关于 Web.config 的配置我们就讲到这里,后续随着实际的应用我们会继续丰富本文章内容,感谢您的阅读,希望本文对您能有所帮助。

  • 相关阅读:
    剑指 Offer 06. 从尾到头打印链表
    接口办自动化测试-postman知识点总览(一)
    【5G MAC】RA-RNTI的计算过程
    Spring 更简单的读取和存储对象
    代码随想录算法训练营第三十二天 | 动态规划理论基础 509.斐波那契数 70.爬楼梯 746.使用最小花费爬楼梯
    聊聊客户档案模型的设计与管理
    DataTable数据导出保存到文件、Excel文件导入到DataTable
    LPC2478(22)IAP在线升级
    入职环境安装经验
    新知识:去掉li前面的项目符号(小圆点)
  • 原文地址:https://blog.csdn.net/michaelline/article/details/138065042