当前位置: 首页 > 编程日记 > 正文

asp.net中web.config配置节点大全详解

web.config 文件查找规则:
       (1)如果在当前页面所在目录下存在web.config文件,查看是否存在所要查找的结点名称,如果存在返回结果并停止查找。
       (2)如果当前页面所在目录下不存在web.config文件或者web.config文件中不存在该结点名,则查找它的上级目录,直到网站的根目录。
       (3)如果网站根目录下不存在web.config文件或者web.config文件中不存在该节点名则在%windir%"Microsoft.NET"Framework"v2.0.50727"CONFIG"web.config文件中查找。
       (4) 如果在%windir%"Microsoft.NET"Framework"v2.0.50727"CONFIG"web.config文件中不存在相应 结点,则在%windir%"Microsoft.NET"Framework"v2.0.50727"CONFIG"machine.config文件 中查找。
       (5)如果仍然没有找到则返回null。
       在asp.net应用程序运行过程中,如果web.config文件发生更改就会导致相应的应用程序重新启动,这时存储在服务器内存中的用户会话信息 就会丢失(如存储在内存中的Session)。

(一) appSetings配置节
       <appSettings>节点主要用来存储asp.net应用程序的一些配置信息,比如上传文件的保存路径等
       <appSettings>
             <add key="ImageType" value=".jpg;.bmp;.gif;.png;.jpeg"/> <!--允许上传的图片格式类型--> 
       </appSettings>
       string fileType=ConfigurationManager.AppSettings["FileType "];

(二) <connectionStrings>节点
       <connectionStrings> 节点主要用于配置数据库连接的,我们可以<connectionStrings>节点中增加任意个节点来保存数据库连接字符串,将来在代码中通过代码的方式动态获取节中的值来实例化数据库连接对象,这样一旦部署的时候数据库连接信息发生变化我们仅需要更改此处的配置即可,而不必因为数据库连接 信息的变化而需要改动程序代码和重新部署
       <connectionStrings> 
             <add name="AspNetStudyConnectionString1" connectionString="DataSource=(local);Initial Catalog=AspNetStudy;User ID=sa;Password=sa"/>
       </connectionString>
      读取连接字符串:string connectionString = ConfigurationManager.ConnectionStrings["AspNetStudyConnectionString1"].ConnectionString;


(三)<compilation>节点
       <compilation>节点配置 ASP.NET 使用的所有编译设置。默认的debug属性为“true”,即允许调试,在这种情况下会影响网站的性能,所以在程序编译完成交付使用之后应将其设为“false”。

(四)<authentication>节点

设置asp.net身份验证模式,有四种身份验证模式,它们的值分别如下:
      Windows 使用Windows身份验证,适用于域用户或者局域网用户。
      Forms 使用表单验证,依靠网站开发人员进行身份验证。
      Passport 使用微软提供的身份验证服务进行身份验证。
      None 不进行任何身份验证。

(五)<customErrors>节点
       <customErrors>节点用于定义 一些自定义错误信息的信息。此节点有Mode和defaultRedirect两个属性,其中defaultRedirect属性是一个可选属性,表示应 用程序发生错误时重定向到的默认URL,如果没有指定该属性则显示一般性错误。Mode属性是一个必选属性,它有三个可能值,它们所代表的意义分别如下:
       On 表示在本地和远程用户都会看到自定义错误信息。
       Off 禁用自定义错误信息,本地和远程用户都会看到详细的错误信息。
       RemoteOnly 表示本地用户将看到详细错误信息,而远程用户将会看到自定义错误信息。
这 里有必要说明一下本地用户和远程用户的概念。当我们访问asp.net应用程时所使用的机器和发布asp.net应用程序所使用的机器为同一台机器时成为 本地用户,反之则称之为远程用户。在开发调试阶段为了便于查找错误Mode属性建议设置为Off,而在部署阶段应将Mode属性设置为On或者 RemoteOnly,以避免这些详细的错误信息暴露了程序代码细节从而引来黑客的入侵。

(六)<error>子节点
       在<customErrors>节点下还包含有< error>子节点,这个节点主要是根据服务器的HTTP错误状态代码而重定向到我们自定义的错误页面,注意要使<error>子节点 下的配置生效,必须将<customErrors>节点节点的Mode属性设置为“On”。下面是一个例子: 
             <customErrors mode="On" defaultRedirect="GenericErrorPage.htm"> 
                   <error statusCode="403" redirect="403.htm" />
                   <error statusCode="404" redirect="404.htm" />
             </customErrors>


(七)<httpHandlers>节点
       <httpHandlers>节点用于根据用户请求的URL和HTTP谓词将用户的请求交给相应的处理程序。可以在配置级别的任何层次配置此节点,也就是说可以针对某个特定目录下指定的特殊文件进行特殊处理。
       <httpHandlers>
             <add path="*.rules" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.xoml" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089" validate="false"/>
             <add path="trace.axd" verb="*" type="System.Web.Handlers.TraceHandler" validate="true"/>
             <add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="true"/>
             <add path="*.axd" verb="*" type="System.Web.HttpNotFoundHandler" validate="true"/>
             <add path="*.aspx" verb="*" type="System.Web.UI.PageHandlerFactory" validate="true"/>
             <add path="*.ashx" verb="*" type="System.Web.UI.SimpleHandlerFactory" validate="true"/>
             <add path="*.asmx" verb="*" type="System.Web.Services.Protocols.WebServiceHandlerFactory,System.Web.Services, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" validate="false"/>
             <add path="*.rem" verb="*" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089" validate="false"/>
             <add path="*.soap" verb="*"type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089" validate="false"/>
             <add path="*.asax" verb="*" type="System.Web.HttpForbiddenHandler"validate="true"/>
             <add path="*.ascx" verb="*" type="System.Web.HttpForbiddenHandler"validate="true"/>
             <add path="*.master" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.skin" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.browser" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.sitemap" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.dll.config" verb="GET,HEAD" type="System.Web.StaticFileHandler" validate="true"/>
             <add path="*.exe.config" verb="GET,HEAD" type="System.Web.StaticFileHandler" validate="true"/>
             <add path="*.config" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.cs" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.csproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.vb" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.vbproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.webinfo" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/> 
             <add path="*.licx" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.resx" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/> 
             <add path="*.resources" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.mdb" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.vjsproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.java" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.jsl" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.ldb" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.ad" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.dd" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.ldd" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.sd" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.cd" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.adprototype" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.lddprototype" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.sdm" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.sdmDocument" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.mdf" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/> 
             <add path="*.ldf" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.exclude" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/> 
             <add path="*.refresh" verb="*" type="System.Web.HttpForbiddenHandler" validate="true"/>
             <add path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089" validate="false"/>
             <add path="*" verb="GET,HEAD,POST"type="System.Web.DefaultHttpHandler" validate="true"/>
             <add path="*" verb="*" type="System.Web.HttpMethodNotAllowedHandler" validate="true"/>
       </httpHandlers>
     

       从上面的配置中可以看出,针对*.mdf、*.ldf文件的Get或者Post请求都会交给System.Web.HttpForbiddenHandler来处理,处理的结果就是用户不能查看或者下载相关的文件。如果我们某个文件夹下的文件或 者某个类型的文件不允许用户下载,可以在</httpHandlers>节点中增加相应的子节点。
       下面我们以一个例子来说明<httpHandlers>节点的用法,在我们的asp.net应用程序中建立一个IPData目录,在IPData目录中创建一个IPData.txt文件,然后在Web.config中添加以下配置:
             <httpHandlers>
                   <add path="IPData/*.txt" verb="*"type="System.Web.HttpForbiddenHandler"/>
             </httpHandlers>

(九)<httpRuntime>节点
       <httpRuntime>节点用于对 ASP.NET HTTP 运行库设置。该节可以在计算机、站点、应用程序和子目录级别声明。例如下面的配置控制用户最大能上传的文件为40M(40*1024K),最大超时时间为60秒,最大并发请求为100个
       <httpRuntime maxRequestLength="40960" executionTimeout="60"appRequestQueueLimit="100"/>

(十)<pages>节点
       <pages>节点用于表示对特定页设置,主要有三个属性,分别如下:
       buffer 是否启用了 HTTP 响应缓冲。
       enableViewStateMac 是否应该对页的视图状态运行计算机身份验证检查 (MAC),以放置用户篡改,默认为false,如果设置为true将会引起性能的降低。
       validateRequest 是否验证用户输入中有跨站点脚本攻击和SQL注入式漏洞攻击,默认为true,如果出现匹配情况就会发HttpRequestValidationException 异常。对于包含有在线文本编辑器页面一般自行验证用户输入而将此属性设为false。
       <pages buffer="true" enableViewStateMac="true" validateRequest="false"/>

(十一)<sessionState>节点
       <sessionState>节点用于配置当前asp.net应用程序的会话状态配置。以下就是一个常见配置:
             <sessionState cookieless="false" mode="InProc" timeout="30" />
       上面的节点配置是设置在asp.net应用程序中启用Cookie,并且指定会话状态模式为在进程中保存会话状态,同时还指定了会话超时为30分钟。
       <sessionState>节点的Mode属性可以是以下几种值之一:
       Custom 使用自定义数据来存储会话状态数据。
       InProc 默认值。由asp.net辅助进程来存储会话状态数据。
       Off 禁用会话状态。
       SQLServer 使用进程外SQL Server数据库保存会话状态数据。
       StateServer 使用进程外 ASP.NET 状态服务存储状态信息。
       一般默认情况下使用InProc模式来存储会话状态数据,这种模式的好处是存取速度快,缺点是比较占用内存,所以不宜在这种模式下存储大型的用户会话数据

(十二)<globalization>节点
       用于配置应用程序的全球化设置。此节点有几个比较重要的属性,分别如下:
       fileEncoding 可选属性。设置.aspx、.asmx 和 .asax 文件的存储编码。
       requestEncoding 可选属性。设置客户端请求的编码,默认为UTF-8.
       responseEncoding 可选属性。设置服务器端响应的编码,默认为UTF-8.
       以下就是asp.net应用程序中的默认配置:
             <globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8"/>
(十三)web.config文件读写
public void SetAppSetting(string key, string value)
{
       AppSettingsSection appSetting = (AppSettingsSection)config.GetSection("appSettings");
       if (appSetting.Settings[key] == null)//如果不存在此节点,则添加
       {
             appSetting.Settings.Add(key, value);
        }
       else//如果存在此节点,则修改
        {
              appSetting.Settings[key].Value = value;
       }
}

转载于:https://www.cnblogs.com/kelvin0916/archive/2012/09/15/2685889.html

相关文章:

如何使用Python的进度条?

在使用Python处理比较耗时操作的时候&#xff0c;为了便于观察处理进度&#xff0c;就需要通过进度条将处理情况进行可视化展示&#xff0c;以便我们能够及时了解情况。这对于第三方库非常丰富的Python来说&#xff0c;并不是什么难事。 tqdm就能非常完美的支持和解决这个问题…

Python各种包下载地址

地址&#xff1a;https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml转载于:https://www.cnblogs.com/data-magnifier/p/7887072.html

Python中的标识符有哪些基础原则?

很多同学学习Python技术的过程中&#xff0c;会接触一些标识符的知识&#xff0c;这部分也是Python的基础知识&#xff0c;那么Python中的标识符有哪些基础原则?接下来我们一起来看看详细的内容介绍吧&#xff0c;希望对你们有Python培训所帮助&#xff0c;请看下文&#xff1…

[原]three.js 地形纹理混合

地形生成通常使用高度图&#xff0c; 而高度图的生成可以使用绘图工具&#xff0c;或者通过分形算法生成&#xff0c;例如square-diamond, fbm方法。这里采用简单求平均值随机波动的方法。对于一个2^n1 * 2^n1 的网格&#xff0c; 中心点的高度是四角点的平均值加随机偏移&a…

入职五年回顾(八) 2013年3月

今天是正月二十&#xff0c;香港高层们会过来派利是。人人能拿到的是一封二十元的利是&#xff0c;而高达三百元的利是则只有十二封&#xff0c;所以要抽奖。我们在新闻上看到腾讯逗利是的场景&#xff0c;但这也是发生在别人的公司。入职第一年逗利是&#xff0c;我脸皮不够厚…

UI设计的发展前景怎么样?

越来越多的人开始关注UI设计这个行业&#xff0c;有的人认为UI设计在业内发展很好&#xff0c;有的人却觉得工作比较难找&#xff0c;那么到底UI设计的发展前景怎么样呢?来看看下面的详细介绍就知道了。 UI设计的发展前景怎么样?可以从以下几个点出发&#xff1a; 一、偏运营…

[Struts2应用开发] JSON的应用

在日常的WEB应用开发过程中&#xff0c;前端常会涉及AJAX&#xff0c;而前台与后台的交互常用的数据格式就是JSON。 Struts2中使用JSON的方法方法如下&#xff1a; Action: 如果action中的某些属性不需要在json里面出现&#xff0c;可以通过annotation &#xff1a;JSON(serial…

2星|《快公司》2018年2-3期:商业人物访谈集

快公司2018年2期/2018年3期&#xff1a;乐观派领导力 本期杂志基本是一些商业人物的访谈集。大部分商业人物都是国内读者不熟悉的美国小公司的领导。 总体评价2星&#xff0c;参考价值不大。 以下是书中一些内容的摘抄&#xff0c;#号后面是kindle电子版中的页码&#xff1a; 1…

【青少年编程】【Scratch】06 侦测模块

06 侦测模块 侦测模块是用来检测场景中某一参数的变化&#xff0c;通过参数变化来为下一步操作提供运行依据。通常与控制模块中的条件语句和循环语句一起使用。 具体分为&#xff1a; 与运动相关的侦测&#xff1b;与按键相关的侦测&#xff1b;侦测舞台、角色等的基本参数&…

Java培训教程:”==“和 equals 方法究竟有什么区别?

在学习java技术过程中&#xff0c;我们会接触到一些变量值的相关知识&#xff0c;本期小编为大家介绍的教程就是关于”“和 equals 方法究竟有什么区别?来看看下面的详细介绍。 Java培训教程&#xff1a;”“和 equals 方法究竟有什么区别? 操作符专门用来比较两个变量的值是…

转载-SQL Server各种导入导出数据方式的比较

注&#xff1a;本文转载自 http://blog.csdn.net/nokiaguy/article/details/4684822 当我们建立一个数据库时&#xff0c;并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时&#xff0c;尤其是在进行数据检验、净化和转换时&#xff0c;将会面临很大的挑战。…

【直播】李祖贤:集成学习答疑直播之八-- 集成知识点回顾与补充

集成学习答疑直播之八-- 集成知识点回顾与补充 集成学习是首个横跨3个周期的长期组队学习&#xff0c;在第25期组队学习中进行到“第三期-模型融合与数据实战”阶段。组队学习期间&#xff0c;课程设计者每周针对学习任务的重难点和学员的学习情况进行集中直播答疑&#xff0c;…

Python培训完可以找什么工作

近几年学习Python技术的人越来越多&#xff0c;对于Python这个行业很多人都是比较看好的&#xff0c;事实也确实如此&#xff0c;那么具体Python培训完可以找什么工作呢?现在学习Python好就业吗?来看看下面的详细介绍吧。 Python培训完可以找什么工作?Python是一种面向对象的…

上传图片时出现Request 对象 错误 'ASP 0104 80004005'

原因.IIs默认的上传大小为200K,当上传的文件超过此大小.则会出现此错误 解决办法: 1.关闭IIS Admin Service服务 2.更改C:\WINDOWS\system32\inetsrv目录下的MetaBase.xml 文件,将第601行的AspMaxRequestEntityAllowed204800.更改为AspMaxRequestEntityAllowed5120000(5120000是…

Datawhale组队学习周报(第013周)

本周&#xff08;05月10日~05月16日&#xff09;&#xff0c;第 25 期组队学习正在如火如荼的进行中。本期组队学习&#xff0c;一共有 3 门开源课程&#xff0c;共组建了 3 个学习群&#xff0c;参与的学习者有 292 人。另外&#xff0c;第 26 期组队学习也蓄势待发准备与大家…

subst将文件夹目录虚拟成虚拟磁盘

SUBST [drive1: [drive2:]path]SUBST drive1: /Ddrive1: 指定要指派路径的虚拟驱动器。[drive2:]path 指定物理驱动器和要指派给虚拟驱动器的路径。/D 删除被替换的 (虚拟) 驱动器。不加任何参数键入 SUBST&#xff0c;可以显示当前虚拟驱动器的清单。本文…

UI设计学习的对比原则怎么运用?

本期小编为大家介绍的UI设计培训教程就是关于UI设计学习的对比原则怎么运用?因为在UI设计中分组原则这一项在文字排版中运用的几率是比较频繁的&#xff0c;并且分组对于层次感和整合信息都有一定的帮助&#xff0c;但是光有分组还远远不够&#xff0c;尤其是零基础学ui我们还…

silverlight数据库应用程序开发

该解决方案使用的是"silverlight导航应用程序Oracle数据库WebService服务” 新建silverlight项目GH&#xff0c;同时会自动添加一个GH.Web,在GH.Web中添加"web 服务"&#xff0c;同时需要添加两个XML文件用于解决跨域问题&#xff1a; 第一个XML文件&#xff1a…

如何设置matplotlib中x,y坐标轴的位置?

在机器学习中经常会使用Sigmoid函数&#xff0c;如果直接使用matplotlib绘图&#xff0c;那么就会像下图这样&#xff0c;原点并没有在(0,0)。 import matplotlib.pyplot as plt import numpyx numpy.linspace(start-10, stop10) y 1 / (1 numpy.e ** (-1 * x))plt.plot(x,…

Python中的类、模块和包究竟是什么?

Python培训教程&#xff1a;Python中的类、模块和包究竟是什么?在Python和其他编程语言中&#xff0c;都有类似或相同的概念&#xff0c;如对象、类、模块、包&#xff0c;名称都是一样的&#xff0c;只不过会有细微的一些区别&#xff0c;正是因为有这些存在&#xff0c;才使…

Test class should have exactly one public constructor解决办法

测试类用的junit&#xff0c;在eclipse中执行ok&#xff0c;在maven编译就挂 Error MessageTest class should have exactly one public constructor Stacktracejava.lang.Exception: Test class should have exactly one public constructorat org.junit.runners.BlockJUnit4C…

中矿大新生赛 A 求解位数和【字符串】

时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒空间限制&#xff1a;C/C 32768K&#xff0c;其他语言65536K64bit IO Format: %lld题目描述 给出一个数x&#xff0c;求x的所有位数的和。输入描述: 第1行输入组数T&#xff0c;代表有T组数据。第2-T1行&#xff0c;每行输入…

学软件测试的优势有哪些

软件测试培训岗在各大招聘网站上越来越多&#xff0c;很多公司都对软件测试这个岗位有需求&#xff0c;那么具体学软件测试的优势有哪些呢?来看看下面的详细介绍就知道了。 软件测试培训&#xff1a;学软件测试的优势有哪些? 工作起点高&#xff0c;发展空间大 开始工作即进入…

C++项目中的extern C {}

2010-07-10 19:45 by 吴秦, 92864 阅读, 22 评论, 收藏, 编辑 引言 在用C的项目源码中&#xff0c;经常会不可避免的会看到下面的代码&#xff1a; ?123456789#ifdef __cplusplusextern "C" { #endif/*...*/#ifdef __cplusplus}#endif它到底有什么用呢&#xff0c;你…

C# 自定义事件和委托

http://www.cnblogs.com/huomm/archive/2007/12/04/982869.html 转载于:https://www.cnblogs.com/xxvv/archive/2012/09/22/3648589.html

参加UI培训有发展吗?

UI设计岗在最近的很多招聘网上都越来越多&#xff0c;逐渐引起了很多人的关注&#xff0c;大家都想知道转行参加UI培训有发展吗?本篇文章就和大家分享一下。 参加UI培训有发展吗? 先来看看UI设计的现状&#xff0c;UI设计行业这几年发展非常快&#xff0c;目前已经初具规模&a…

lampp开机启动

安装好之后&#xff0c;输入以下命令即可&#xff1a; ln -s /opt/lampp/lampp /etc/rc.d/rc3.d/S99lampp ln -s /opt/lampp/lampp /etc/rc.d/rc4.d/S99lampp ln -s /opt/lampp/lampp /etc/rc.d/rc5.d/S99lampp转载于:https://www.cnblogs.com/imkun/archive/2012/09/23/269929…