.Net4.0 Web.config 配置实践

2024-04-22 18:04
文章标签 配置 实践 web config net4.0

本文主要是介绍.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 版本,为保证兼容性,最好配置

<system.web><httpRuntime  requestValidationMode="3.5"  />
</system.web>

上传文件限制

这是经常用到和遇到的一个问题,对于默认配置 maxRequestLength 一般仅允许上传不超过4Mb的文件,我们可以通过修改下列配置节:

<system.web><httpRuntime  maxRequestLength="20480000"  /></system.web>

我们还可以配置些节点:

<system.webServer><security><requestFiltering><requestLimits maxAllowedContentLength="2147483647" /></requestFiltering></security>
</system.webServer>

如果不起作用还可以配置如下节(如果存在):

<aspnetUploadSettings><add key="maxRequestLength" value="20480000" />
</aspnetUploadSettings>

Request.Path危险值配置

在页面处理输入时,我们会遇到客户端(&)中检测到有潜在危险的 Request.Path 值错误 (即包含一些被认为是危险的字符输入,如脚本标记等),如果我们有需要关闭此功能时,可以在应用页面头部加入如下配置:

<%@ Page Language="C#"  ValidateRequest="FALSE"  %>

Web.config 文件里我们可以配置如下:

<system.web><httpRuntime requestPathInvalidCharacters="" />
</system.web>

全站应用UTF-8编码

目前utf-8编码是广泛应用的一种编码,我们可以默认配置如下节:

<system.web><globalization requestEncoding=”utf-8″ responseEncoding=”utf-8″ fileEncoding="utf-8" />
</system.web>

也可以单独为某页面配置编码,如下示例:

<location path="cc/test.aspx"><system.web><globalization requestEncoding="gb2312" responseEncoding="gb2312"  fileEncoding="gb2312"/></system.web>
</location>

设置日期格式

某些情况我们需要对日期格式进行符合自己应用的标准化格式输出,如 2024-04-22的日期格式,我们会发现从数据库提取的日期格式未必如预期那样,即使配置了数据库格式及WINDOWS环境日期格式,仍然不能按照预期显示,那么我们可以尝试在 Web.config <appSettings>配置节添加如下key:

<appSettings><add key="ShortDatePattern" value="yyyy-MM-dd" />
</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:

<appSettings><add key="aspnet:RequestQueueLimitPerSession" value="2147483647"/>
</appSetttings>

更多详情请参考如下链接:

有关迁移到 .NET Framework 4.7.x 的操作的重定向目标更改 

正常运行指定扩展名的文件

在我们运行的一些应用中,需要运行 mp4 文件,发现运行时出现错误,我们可以加入对该扩展名的支持,如下配置:

<system.webServer><staticContent><remove fileExtension=".mp4" /><mimeMap fileExtension=".mp4" mimeType="video/mp4" /></staticContent>
</system.webServer>

请注意 remove 节,是一种比较稳妥和兼容的写法,否则可能未必能够达到您的预期。

Json字符串超出最大长度限制

在处理Json字符串序列化的时候,可能会遇到字符串超过长度限制的错误,我们可以配置如下节:

<system.web.extensions><scripting><webServices><jsonSerialization maxJsonLength="204800"/></webServices></scripting>
</system.web.extensions>

控件早期版本的呈现方式

指定控件应以 ASP.NET 的早期版本中的呈现方式,可以设置为3.5(最低版本),如下配置:

<system.web><pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"><controls><add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /></controls></pages>
</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

 方法代码如下:

 

public bool appSettingsEdit(string WebConfigDirectory,string appSettingsAddkey,string keyvalue) { try { string path=WebConfigDirectory+"\\web.config"; XmlDocument xd=new XmlDocument(); xd.Load(path); //如果没有appSetting,则添加 if(xd.SelectNodes("//appSettings").Count==0) { xd.DocumentElement.AppendChild(xd.CreateElement("appSettings")); } //判断节点是否存在,如果存在则修改当前节点 bool addNode=true; foreach(XmlNode xn1 in xd.SelectNodes("/configuration/appSettings/add")) { if(xn1.Attributes["key"].Value==appSettingsAddkey) { addNode=false; xn1.Attributes["value"].Value=keyvalue; // xn1.ParentNode.RemoveChild(xn1); break; } } //当前节点不存在,则添加新节点 if(addNode) { //创建新节点 XmlNode xn2=xd.CreateElement("add"); //添加key XmlAttribute xa=xd.CreateAttribute("key"); xa.Value=appSettingsAddkey; xn2.Attributes.Append(xa); //添加value xa=xd.CreateAttribute("value"); xa.Value=keyvalue; xn2.Attributes.Append(xa); xd.SelectSingleNode("/configuration/appSettings").AppendChild(xn2); } //保存web.config xd.Save(path); return true; } catch { return false; } 
} 

小结

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

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

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

这篇关于.Net4.0 Web.config 配置实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/926479

相关文章

使用easy connect之后,maven无法使用,原来需要配置-Djava.net.preferIPv4Stack=true问题

《使用easyconnect之后,maven无法使用,原来需要配置-Djava.net.preferIPv4Stack=true问题》:本文主要介绍使用easyconnect之后,maven无法... 目录使用easGWowCy connect之后,maven无法使用,原来需要配置-DJava.net.pr

史上最全nginx详细参数配置

《史上最全nginx详细参数配置》Nginx是一个轻量级高性能的HTTP和反向代理服务器,同时也是一个通用代理服务器(TCP/UDP/IMAP/POP3/SMTP),最初由俄罗斯人IgorSyso... 目录基本命令默认配置搭建站点根据文件类型设置过期时间禁止文件缓存防盗链静态文件压缩指定定错误页面跨域问题

Redis实现分布式锁全解析之从原理到实践过程

《Redis实现分布式锁全解析之从原理到实践过程》:本文主要介绍Redis实现分布式锁全解析之从原理到实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、背景介绍二、解决方案(一)使用 SETNX 命令(二)设置锁的过期时间(三)解决锁的误删问题(四)Re

nginx负载均衡及详细配置方法

《nginx负载均衡及详细配置方法》Nginx作为一种高效的Web服务器和反向代理服务器,广泛应用于网站的负载均衡中,:本文主要介绍nginx负载均衡及详细配置,需要的朋友可以参考下... 目录一、 nginx负载均衡策略1.1 基本负载均衡策略1.2 第三方策略1.3 策略对比二、 nginx配置2.1

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

SpringBoot3.4配置校验新特性的用法详解

《SpringBoot3.4配置校验新特性的用法详解》SpringBoot3.4对配置校验支持进行了全面升级,这篇文章为大家详细介绍了一下它们的具体使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考... 目录基本用法示例定义配置类配置 application.yml注入使用嵌套对象与集合元素深度校验开发

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

Spring Boot 整合 SSE的高级实践(Server-Sent Events)

《SpringBoot整合SSE的高级实践(Server-SentEvents)》SSE(Server-SentEvents)是一种基于HTTP协议的单向通信机制,允许服务器向浏览器持续发送实... 目录1、简述2、Spring Boot 中的SSE实现2.1 添加依赖2.2 实现后端接口2.3 配置超时时