Web.config详解
- 格式:doc
- 大小:53.50 KB
- 文档页数:11
web.config文件是一个XML文件,它的根结点是<configuration>,在<configuration>节点下的常见子节点有:<configSections>、<appSettings>、<connectionStrings>和<system.web>。
其中<appSettings>节点主要用于配置一些网站的应用配置信息,而<connectionStrings>节点主要用于配置网站的数据库连接字符串信息。
<system.web>节点主要是网站运行时的一些配置,它的常见节点有如下:Web.config常用配置<appSettings>节点<appSettings>节点主要用来存储应用程序的一些配置信息,系统常用的一些全局变量,如上传文件的保存路径等。
<appSettings><!--允许上传的图片格式类型--><add key="ImageType" value=".jpg;.bmp;.gif;.png;.jpeg"/><!--允许上传的文件类型--><add key="FileType" value=".jpg;.bmp;.gif;.png;.jpeg;.pdf;.zip;.rar;.xls;.doc"/></appSettings>对于<appSettings>节点中的值可以按照key来进行访问,以下就是一个读取key值为“FileType”节点值的例子:string fileType=ConfigurationManager.AppSettings["FileType "];<authentication>节点设置身份验证模式,有四种身份验证模式,它们的值分别如下:Mode 说明Windows 使用Windows身份验证,适用于域用户或者局域网用户。
net中web.config⼀个配置⽂件解决⽅法(其他配置⽂件引⼊⽅式)近期⼀个项⽬需要写许多的配置项,发现在单个web.config⾥⾯写的话会很乱也难于查找所以搜了⼀下解决了,记录下来⼀、 webconfig提供了引⼊其他config的⽅式<connectionStrings configSource="Configs\database.config" />这个是连接字符串的配置你可以在database。
config⾥⾯写很多链接字符串以备⾃⼰调⽤database。
config⾥⾯的内容如下:<?xml version="1.0" encoding="utf-8"?><connectionStrings><add name="SDbContext" connectionString="Server=.;Initial Catalog=Self;User ID=sa;Password=password" providerName="System.Data.SqlClient"/> </connectionStrings><appSettings configSource="Configs\system.config" />这个是键值对的⽅式存放代码如下:<?xml version="1.0" encoding="utf-8"?><appSettings><!-- ================== 1:开发系统相关配置 ================== --><!-- 登陆提供者模式:Session、Cookie--><add key="LoginProvider" value="Cookie"/><!-- 启⽤系统⽇志--><add key="IsLog" value="true"/><!-- 数据库超时间--><add key="CommandTimeout" value="180"/><!--启⽤IP过滤 --><add key="IsIPFilter" value="false"/><!-- ================== 2:系统软件参数配置 ================== --><!-- 联系我们 --><add key="Contact" value="TE Software(Mobility)"/><!-- 软件名称 --><add key="SoftName" value="Sub Self"/><!-- 软件版本 --><add key="Version" value="1.0"/><!-- 设置就应⽤路径 --><add key="AppName" value=""/><!-- 设置就应⽤路径 --><add key="SqlGetBomList" value=""/></appSettings>以上两个是不需要特殊的配置的,放到configuration⾥⾯ configSections的下⾯这样就可以⼆、下⾯介绍⾃定义配置节<configSections><section name="users" type="ValueSectionHandler"/></configSections><users configSource="users.config"></users>注意configsections⾥⾯的⼀条,是声明这是以什么组织⽅式users.config ⾥⾯的内容如下:<users><add key="beijing" value="123"></add><add key="tianjin" value="123"></add></users>获取配置的⽅式:NameValueCollection users = System.Configuration.ConfigurationManager.GetSection("users") as NameValueCollection;// Response.Write(users.Keys[0]+"</br>"+users.Keys[1]);users.Get("beijing"); 三、复杂类型:复杂类型的声明就不同了<configSections><section name="roles" type="EBuy.Chapter3.NTier.WebUI.RolesConfig, EBuy.Chapter3.NTier.WebUI"/></configSections><roles configSource="roles.config"></roles>内容如下<roles><add username="beijing" password="123"></add><add username="tianjin" password="123"></add></roles>获取⽅式:using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace EBuy.Chapter3.NTier.WebUI{public class RolesConfig : System.Configuration.IConfigurationSectionHandler{public object Create(object parent, object configContext, System.Xml.XmlNode section){return section;}}}XmlNode roles= System.Configuration.ConfigurationManager.GetSection("roles") as XmlNode;Response.Write(roles.ChildNodes [0].Attributes["username"].InnerText);还可以配置为实体using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace EBuy.Chapter3.NTier.WebUI{public class RolesConfig : System.Configuration.IConfigurationSectionHandler{public object Create(object parent, object configContext, System.Xml.XmlNode section){var list=new List<Role>();for(int i=0;i<section.ChildNodes.Count;i++){list.Add(new Role (){Username =section.ChildNodes[i].Attributes["username"].InnerText ,Password =section.ChildNodes[i].Attributes["password"].InnerText });}return list;}}public class Role{public string Username { get; set; }public string Password{get;set;}}}var roles = System.Configuration.ConfigurationManager.GetSection("roles") as List<EBuy.Chapter3.NTier.WebUI.Role >; Response.Write(roles.First ().Username);。
web.config文件规则
web.config文件是用于配置网站的XML格式文件。
它包含了许多不同类型的规则,用于配置网站的行为和功能。
以下是一些常见的规则:
1. 认证和授权规则, web.config文件可以包含认证和授权规则,用于定义哪些用户可以访问网站的特定部分,以及他们可以执行的操作。
这些规则可以基于角色、用户或其他条件进行配置。
2. URL重写规则,通过使用URL重写规则,web.config文件可以配置网站的URL结构,将复杂的URL重写为更简洁、易于理解的形式。
这对于搜索引擎优化和用户友好性非常重要。
3. 错误处理规则, web.config文件可以定义网站遇到错误时的行为。
例如,可以配置自定义的错误页面,或者将特定类型的错误记录到日志中。
4. 缓存规则,通过web.config文件,可以配置网站的缓存策略,包括哪些内容需要被缓存、缓存的过期时间等。
5. 会话状态规则, web.config文件可以配置网站的会话状态
管理方式,包括会话超时时间、会话数据的存储方式等。
6. 安全规则, web.config文件可以包含安全规则,用于配置
网站的安全性,例如设置HTTPS连接、防止跨站点请求伪造(CSRF)等。
7. MIME类型规则, web.config文件可以定义网站支持的
MIME类型,以便正确处理各种类型的文件。
总的来说,web.config文件是网站的核心配置文件,
其中包含了各种规则,用于定义网站的行为、安全性、性能和功能。
通过合理配置web.config文件中的规则,可以使网站更加安全、可
靠且高效。
Web.Config中数据库连接字符串解析在中,穿过Web.config,您可为使用<appSettings> 本忘,在这个标志中,你可用 <add ... /> 本忘界说0到少个设置。
原文中人们重要议论了怎样使用web.config来设置装备摆设一个web运用程序中的数据库连交。
一.基础利用web.config文件是尺度的xml文件,人们可以使用它来为一台呆板下的每一个web使用程序或某个应用程序或一个目录下的版面来举行设置,固然,它也可认为一个独自的web页里入止设置。
SqlServer连接配放:<add name="LocalSqlServer" connectionString="Data Source=./SQLExpress;min pool size=5;max pool size=512;IntegratedSecurity=True;AttachDBFilename=|DataDirectory|TimeTracker.mdf;UserInstance=true" /><add name="MDM" connectionString="Data Source=10.21.17.17,22/ND0;Initial Catalog=MDM_V2;Persist Security Info=True;UserID=sa;Password=Lenovo!123" providerName="System.Data.SqlClient";min pool size=5;max pool size=512;/>SqlConnectionStringBuilder真例化时,要用到connectionString,如:SqlConnectionStringBuild builder = newSqlConnectionStringBuild(connectionString)。
Web config安全相关配置WEB安全电脑资料web.config 位于根目录1、authentication节点基于窗体(Forms)的身份验证配置站点,当没有登陆的用户访问需要身份验证的网页,网页自动跳转到登陆网页。
其中元素loginUrl 表示登陆网页的名称,name表示Cookie名称2、authorization 节点allow 向授权规则映射添加一个规则,该规则允许对资源进行访问。
deny 向授权规则映射添加一条拒绝对资源的访问的授权规则。
users="*" 是指任何用户 users="?" 是指经身份验证的用户注意: 运行时,授权模块从最本地的配置文件开始,循环访问allow 和 deny 元素,直到它找到适合特定用户帐户的第一个访问规则。
然后,该授权模块根据找到的第一个访问规则是 allow 还是deny 规则来允许或拒绝对 URL 资源的访问。
默认的授权规则为。
因此,默认情况下允许访问,除非另外配置。
如果在根目录下的web.config配置太繁琐,可以配置到相应目录下,例如User目录下的web.config文件3、customErrors 节点mode="On|Off|RemoteOnly">defaultRedirect 可选的属性。
指定出错时将浏览器定向到的默认 URL。
如果未指定该属性,则显示一般性错误。
Mode 必选的属性。
指定是启用或禁用自定义错误,还是仅向远程客户端显示自定义错误。
此属性可以为下列值之一。
值说明On 指定启用自定义错误。
如果未指定 defaultRedirect,用户将看到一般性错误。
Off 指定禁用自定义错误。
这允许显示标准的详细错误。
RemoteOnly 指定仅向远程客户端显示自定义错误并且向本地主机显示 错误。
这是默认值。
默认值为 RemoteOnly。
error 可选的元素。
webconfig 参数WebConfig 参数是指在Web应用程序的配置文件中使用的一组参数,它们用于配置和调整Web应用程序的行为和功能。
WebConfig 参数的正确配置对于应用程序的性能、安全性和可靠性都起着重要的作用。
本文将介绍一些常见的WebConfig 参数,并解释它们的作用和用法。
1. `<compilation>` 参数:这个参数用于配置应用程序的编译方式。
其中的 `debug` 属性控制是否启用调试模式,`batch` 属性控制是否启用批处理编译,`targetFramework` 属性指定应用程序的目标框架版本。
正确配置这些参数可以提高应用程序的性能和安全性。
2. `<httpRuntime>` 参数:这个参数用于配置应用程序的运行时行为。
其中的 `maxRequestLength` 属性指定了请求的最大长度,`executionTimeout` 属性指定了请求的最大执行时间。
合理地配置这些参数可以避免应用程序受到恶意请求的攻击,同时也可以提高应用程序的响应速度。
3. `<sessionState>` 参数:这个参数用于配置应用程序的会话状态管理方式。
其中的 `mode` 属性指定了会话状态的模式,可以是`InProc`、`StateServer` 或 `SQLServer`。
`timeout` 属性指定了会话的超时时间。
正确配置这些参数可以确保应用程序的会话状态管理安全可靠。
4. `<authentication>` 参数:这个参数用于配置应用程序的身份验证方式。
其中的 `mode` 属性指定了身份验证的模式,可以是`Windows`、`Forms` 或 `None`。
`Forms` 模式下,还可以配置`loginUrl` 属性指定登录页的 URL。
正确配置这些参数可以保护应用程序的安全性,防止未授权的访问。
5. `<authorization>` 参数:这个参数用于配置应用程序的授权方式。
web.config文件中链接字符串的定义和使用方式在 Web 应用程序中,`web.config` 文件用于存储应用程序的配置信息,包括数据库连接字符串。
连接字符串用于指定应用程序如何连接到数据库。
下面是在`web.config` 文件中定义和使用连接字符串的方式:1. 打开项目中的`web.config` 文件。
2. 在`<configuration>` 标签下添加`<connectionStrings>` 元素,用于存储连接字符串。
如果该元素已经存在,则可以直接在其中添加连接字符串。
```xml<configuration><connectionStrings><!--连接字符串的定义--><add name="MyConnectionString" connectionString="Data Source=ServerName;Initial Catalog=DatabaseName;User ID=UserName;Password=Password" providerName="System.Data.SqlClient" /></connectionStrings>...</configuration>```上述示例中,`name` 属性是连接字符串的名称,`connectionString` 属性是实际的连接字符串,`providerName` 属性是用于指定数据库提供程序的名称(例如,SQL Server 的提供程序名称为"System.Data.SqlClient")。
3. 在应用程序中使用连接字符串:-在代码中,可以使用`System.Configuration.ConfigurationManager.ConnectionStrings` 对象来访问连接字符串:```csharpstring connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"].Connecti onString;```这将返回名为"MyConnectionString" 的连接字符串的实际值。
中web.config配置⽂件详解(⼆)摘⾃近⽇正在看,看到Web.config有很不清楚之处,特意从⽹络、MSDN搜集、归纳和整理,供⼤家分享。
在的web.config中,可以⽤两种⽅式来写连接字符串的配置。
<configuration><appSettings><add key="connstr1" value="Data Source=.;Initial Catalog=DBName;Integrated Security=true"/><add key="connstr2" value="........."></appSettings><connectionStrings><add name="connstr3" connectionString="........" /><add name="connstr4" connectionString="......" providerName="System.Data.Sqlclient"</connectionStrings></configuration>如上代码所⽰:两种⽅式为appSettings和connectionStringsappSettings:①它是1.1的时候⽤的,在vs2003中⽤的②⾥⾯存的相当于键值对的形式,key和value。
不仅仅可以存连接字符串,还可以存储⼀些配置项。
其中value中包括数据库服务器地址、⽤户名和密码、数据库名称等信息。
③在appSettings中,不能使⽤ProviderName="System.Data......."(不过如果你要⽤也可以,只要写在value⾥⾯就可以了,当成值传递过去)④在后台取值⽅式⽤代码:string conn=System.Configuration.ConfigurationManager.AppSettings["connstr";]connectionStrings:①它是2.0中新增的。
Web.co nfig配置文件详解(新手必看)花了点时间整理了一下A SP.NE T Web.conf ig配置文件的基本使用方法。
很适合新手参看,由于W eb.co nfig在使用很灵活,可以自定义一些节点。
所以这里只介绍一些比较常用的节点。
<?xml vers ion="1.0"?><!--注意:除了手动编辑此文件以外,您还可以使用Web 管理工具来配置应用程序的设置。
可以使用V isual Stud io 中的“网站”->“As配置”选项。
设置和注释的完整列表在machi ne.co nfig.comme nts 中,该文件通常位于"Windo ws"Mi croso ft.Ne t"Fra mewor k"v2.x"Con fig 中。
--><!--Webc onfig文件是一个xml文件,conf igura tion是xml文件的根节点,由于xml 文件的根节点只能有一个,所以W ebcon fig的所有配置都是在这个节点内进行的。
--><conf igura tion><!--指定配置节和命名空间声明。
clea r:移除对继承的节和节组的所有引用,只允许由当前secti on 和secti onGro up 元素添加的节和节组。
re move:移除对继承的节和节组的引用。
sec tion:定义配置节处理程序与配置元素之间的关联。
secti onGro up:定义配置节处理程序与配置节之间的关联。
--><c onfig Secti ons><sect ionGr oup n ame="syste m.web.exte nsion s"ty pe="S ystem.Web.Confi gurat ion.S ystem WebEx tensi onsSe ction Group,Sys tem.W eb.Ex tensi ons,Versi on=1.0.61025.0, Cult ure=n eutra l,Pu blicK eyTok en=31bf3856ad364e35"><secti onGro up na me="s cript ing"type="Syst em.We b.Con figur ation.Scri pting Secti onGro up, S ystem.Web.Exten sions,Ver sion=1.0.61025.0, Cu lture=neut ral,Publi cKeyT oken=31bf3856ad364e35"> <s ectio n nam e="sc riptR esour ceHan dler"type="Sys tem.W eb.Co nfigu ratio n.Scr iptin gScri ptRes ource Handl erSec tion,Syst em.We b.Ext ensio ns, V ersio n=1.0.61025.0,Cultu re=ne utral,Pub licKe yToke n=31b f3856ad364e35"requi rePer missi on="f alse"allo wDefi nitio n="Ma chine ToApp licat ion"/></sect ionGr oup></sec tionG roup> <sec tionname="rewr iter"type="Int ellig encia.UrlR ewrit er.Co nfigu ratio n.Rew riter Confi gurat ionSe ction Handl er, I nt ell igenc ia.Ur lRewr iter" /></co nfigS ectio ns><!--ap pSett ings是应用程序设置,可以定义应用程序的全局常量设置等信息--><appS ettin gs><add key="1" v alue="1" /><add k ey="g ao" v alue="weip eng"/></app Setti ngs><!--连接字符串设置--><co nnect ionSt rings> <ad d nam e="Co nnStr ing"conne ction Strin g="Da ta So urce=GAO;I nitia lCat alog=HBWXD ate;U ser I D=sa;passw ord=s a"></add><addname="111" conn ectio nStri ng="11111" /></co nnect ionSt rings><!--指定应用子配置设置的资源,并锁定配置设置,以防止它们被子配置文件重写。
ipconfig详解:web.config详解疯狂代码 / ĵ:http://DotNet/Article22869.html在开发中经常会遇到这样情况在部署时为了保密起见并不将源代码随项目同发布而我们开发时环境和部署环境可能不致(比如数据库不样)如果在代码中保存这些配置这些信息部署时需要到用户那里更改代码再重新编译这种部署方式非常麻烦在.net中提供了种便捷保存项目配置信息办法那就是利用配置文件配置文件文件后缀般是.config在中配置文件名般默认是web.config每个web.config文件都是基于XML文本文件并且可以保存到Web应用中任何目录中在发布Web应用时web.config文件并不编译进dll文件中如果将来客户端发生了变化仅仅需要用记事本打开web.config文件编辑相关设置就可以重新正常使用非常方便本篇要讲述知识如下:配置文件查找优先级配置文件查找优先级在.net提供了个针对当前机器配置文件这个文件是machine.config它位于%windir%\\Framework\v2.0.50727\CONFIG\文件下(%windir%是系统分区下系统目录在命令行模式下输入%windir%然后回车就能查看当前机器系统目录在Windows2003及WindowsXP中%windir%是系统分区下windows目录在Windows2000中%windir%是系统分区下WinNT目录在笔者机器上这个系统目录是C:\WINDOWS)这个文件里面定义了针对当前机器WinForm和应用配置下面是machine.config文件内容:在这个文件夹下还有个web.config文件这个文件包含了网站WebSite常用配置下面是这个web.config文件内容:网站WebSiteIIS启动时候会加载配置文件中配置信息然后缓存Cache这些信息这样就不必每次去读取配置信息在运行过程中应用会监视配置文件变化情况旦编辑了这些配置信息就会重新读取这些配置信息并缓存Cache当我们要读取某个节点或者节点组信息时是按照如下方式搜索:(1)如果在当前页面所在目录下存在web.config文件查看是否存在所要查找结点名称如果存在返回结果并停止查找(2)如果当前页面所在目录下不存在web.config文件或者web.config文件中不存在该结点名则查找它上级目录直到网站WebSite根目录(3)如果网站WebSite根目录下不存在web.config文件或者web.config文件中不存在该节点名则在%windir%\\Framework\v2.0.50727\CONFIG\web.config文件中查找(4)如果在%windir%\\Framework\v2.0.50727\CONFIG\web.config文件中不存在相应结点则在%windir%\\Framework\v2.0.50727\CONFIG\machine.config文件中查找(5)如果仍然没有找到则返回null所以如果我们对某个网站WebSite或者某个文件夹有特定要求配置可以在相应文件夹下创建个web.config文件覆盖掉上级文件夹中web.config文件中同名配置即可这些配置信息寻找只查找次以后便被缓存Cache起来供后来在应用运行过程中如果web.config文件发生更改就会导致相应应用重新启动这时存储在服务器内存中用户会话信息就会丢失(如存储在内存中Session)些软件Software(如杀毒软件Software)每次完成对web.config访问时就会修改web.config访问时间属性也会导致应用重启配置文件节点介绍说明web.config文件是个XML文件它根结点是<configuration>在<configuration>节点下常见子节点有:<configSections>、<appSettings>、<connectionStrings>和<system.web>其中<appSettings>节点主要用于配置些网站WebSite应用配置信息而<connectionStrings>节点主要用于配置网站WebSite数据库连接串信息<system.web>节点主要是网站WebSite运行时些配置它常见节点有如下:<appSettings>节点<appSettings>节点主要用来存储应用些配置信息比如上传文件保存路径等以下是个例子:<appSettings><!--允许上传图片格式类型--><add key="ImageType" value=".jpg;.bmp;.g;.png;.jpeg"/><!--允许上传文件类型--><add key="FileType" value=".jpg;.bmp;.g;.png;.jpeg;.pdf;.zip;.rar;.xls;.doc"/></appSettings>对于<appSettings>节点中值可以按照key来进行访问以下就是个读取key值为“FileType”节点值例子:fileType=ConfigurationManager.AppSettings["FileType "];<connectionStrings>节点<connectionStrings>节点主要用于配置数据库连接我们可以<connectionStrings>节点中增加任意个节点来保存数据库连接串将来在代码中通过代码方式动态获取节点值来例子化数据库连接对象这样旦部署时候数据库连接信息发生变化我们仅需要更改此处配置即可而不必数据库连接信息变化而需要改动代码和重新部署以下就是个<connectionStrings>节点配置例子:<connectionStrings><!--SQL Server数据库配置--><add name="AspNetStudyConnectionString1" connectionString="Data Source=(local);Initial Catalog=AspNetStudy;User ID=sa;Password=sa"/></connectionStrings>在代码中我们可以这么例子化数据库连接对象://读取web.config节点配置connectionString =ConfigurationManager.ConnectionStrings["AspNetStudyConnectionString1"].ConnectionString;//例子化SqlConnection对象SqlConnection connection = SqlConnection(connectionString);这样做好处是旦开发时所用数据库和部署时数据库不致仅仅需要用记事本的类文本编辑工具编辑connectionString属性值就行了<compilation>节点<compilation>节点配置 使用所有编译设置默认debug属性为“true”即允许调试在这种情况下会影响网站WebSite性能所以在编译完成交付使用的后应将其设为“false”<authentication>节点设置身份验证模式有 4种身份验证模式它们值分别如下:Mode 介绍说明Windows 使用Windows身份验证适用于域用户或者局域网用户Forms 使用表单验证依靠网站WebSite开发人员进行身份验证Passport 使用微软提供身份验证服务进行身份验证None 不进行任何身份验证<authentication>节点<authentication>节点控制用户对网站WebSite、目录或者单独页访问必须配合<authentication>节点起使用<customErrors>节点<customErrors>节点用于定义些自定义信息信息此节点有Mode和defaultRedirect两个属性其中defaultRedirect属性是个可选属性表示应用发生时重定向到默认URL如果没有指定该属性则显示般性Mode属性是个必选属性它有 3个可能值它们所代表意义分别如下:Mode 介绍说明On 表示在本地和远程用户都会看到自定义信息Off 禁用自定义信息本地和远程用户都会看到详细信息RemoteOnly 表示本地用户将看到详细信息而远程用户将会看到自定义信息这里有必要介绍说明下本地用户和远程用户概念当我们访问应用程时所使用机器和发布应用所使用机器为同台机器时成为本地用户反的则称的为远程用户在开发调试阶段为了便于查找Mode属性建议设置为Off而在部署阶段应将Mode属性设置为On或者RemoteOnly以避免这些详细信息暴露了代码细节从而引来黑客入侵下面我们添加个页面CustomErrorsDemo.aspx在它Page_Load事件里抛出个异常代码如下:using ;using .Data;using .Configuration;using .Collections;using .Web;using .Web.Security;using .Web.UI;using .Web.UI.WebControls;using .Web.UI.WebControls.WebParts;using .Web.UI.HtmlControls;public partial CustomErrorsDemo : .Web.UI.Page{protected void Page_Load(object sender, EventArgs e){throw Exception("故意抛出异常");}}我们先配置<customErrors>如下:<customErrors mode="RemoteOnly"><error statusCode="403" redirect="NoAccess.htm" /><error statusCode="404" redirect="FileNotFound.htm" /></customErrors>这时本地运行CustomErrorsDemo.aspx效果如下:远程访问时看到效果:如果我们将customErrorsMode属性设置为“On”本地运行和远程访问都会看到如下效果:如果将customErrorsMode属性设置为“Off”本地运行和远程访问都会看到如下效果:<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>在上面配置中如果用户访问页面不存在就会跳转到404.htm页面如果用户没有权限访问请求页面则会跳转到403.htm页面403.htm和404.htm页面都是我们自己添加页面我们可以在页面中给出友好提示<httpHandlers>节点<httpHandlers>节点用于根据用户请求URL和HTTP谓词将用户请求交给相应处理可以在配置级别任何层次配置此节点也就是说可以针对某个特定目录下指定特殊文件进行特殊处理下面是和machine.config文件同目录下web.config文件中<httpHandlers>节点配置:<httpHandlers><add path="*.rules" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.xoml" verb="*" type=".ServiceModel.Activation.HttpHandler, .ServiceModel,Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" validate="false"/><add path="trace.axd" verb="*" type=".Web.Handlers.TraceHandler" validate="true"/><add path="WebResource.axd" verb="GET" type=".Web.Handlers.AssemblyResourceLoader" validate="true"/><add path="*.axd" verb="*" type=".Web.HttpNotFoundHandler" validate="true"/><add path="*.aspx" verb="*" type=".Web.UI.PageHandlerFactory" validate="true"/><add path="*.ashx" verb="*" type=".Web.UI.SimpleHandlerFactory" validate="true"/><add path="*.asmx" verb="*" type=".Web.Services.Protocols.WebServiceHandlerFactory,.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"validate="false"/><add path="*.rem" verb="*" type=".Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, .Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"validate="false"/><add path="*.soap" verb="*" type=".Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, .Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"validate="false"/><add path="*.asax" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.ascx" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.master" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.skin" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.browser" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.sitemap" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.dll.config" verb="GET,HEAD" type=".Web.StaticFileHandler" validate="true"/><add path="*.exe.config" verb="GET,HEAD" type=".Web.StaticFileHandler" validate="true"/><add path="*.config" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.cs" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.csproj" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.vb" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.vbproj" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.webinfo" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.licx" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.resx" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.resources" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.mdb" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.vjsproj" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.java" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.jsl" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.ldb" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.ad" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.dd" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.ldd" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.sd" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.cd" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.adprototype" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.lddprototype" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.sdm" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.sdmDocument" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.mdf" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.ldf" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.exclude" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.refresh" verb="*" type=".Web.HttpForbiddenHandler" validate="true"/><add path="*.svc" verb="*" type=".ServiceModel.Activation.HttpHandler, .ServiceModel,Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" validate="false"/><add path="*" verb="GET,HEAD,POST" type=".Web.DefaultHttpHandler" validate="true"/><add path="*" verb="*" type=".Web.HttpMethodNotAllowedHandler" validate="true"/></httpHandlers>从上面配置中可以看出针对*.mdf、*.ldf文件Get或者Post请求都会交给.Web.HttpForbiddenHandler来处理处理结果就是用户不能查看或者下载相关文件如果我们某个文件夹下文件或者某个类型文件不允许用户下载可以在</httpHandlers>节点中增加相应子节点下面我们以个例子来介绍说明<httpHandlers>节点使用方法在我们应用中建立个IPData目录在IPData目录中创建个IPData.txt文件然后在Web.config中添加以下配置:<httpHandlers><add path="IPData/*.txt" verb="*" type=".Web.HttpForbiddenHandler"/></httpHandlers>上面代码作用是禁止访问IPData目录下任何txt文件然后新建个页面在页面中添加个超级链接链接到该目录下IPData.txt文件代码如下:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="HttpHandlersDemo.aspx.cs" Inherits="HttpHandlersDemo" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml" ><head runat="server"><title>httpHandlers节点例子</title></head><body><form id="form1" runat="server"><div><a href="IPData/IPData.txt" title="打开IPData/IPData.txt">打开IPData/IPData.txt</a></div></form></body></html>运行这个页面效果如下:当前web.config文件<customErrors>节点配置如下:<customErrors mode="On" defaultRedirect="GenericErrorPage.htm"><error statusCode="403" redirect="403.htm" /><error statusCode="404" redirect="404.htm" /></customErrors>如果存在403.htm和404.htm页面点击超级链接的后会出现如下效果:我们从上图中可以看到当<customErrors>节点Mode属性为“On”时被禁止访问IPData文件夹下所有txt文件所以会跳转到自定义没有权限提示页面即403.htm<httpRuntime>节点<httpRuntime>节点用于对 HTTP 运行库设置该节可以在计算机、站点、应用和子目录级别声明 例如下面配置控制用户最大能上传文件为40M(40*1024K)最大超时时间为60秒最大并发请求为100个<httpRuntime maxRequestLength="40960" executionTimeout="60" appRequestQueueLimit="100"/><pages>节点<pages>节点用于表示对特定页设置主要有 3个属性分别如下:属性名 介绍说明buffer 是否启用了 HTTP 响应缓冲enableViewStateMac 是否应该对页视图状态运行计算机身份验证检查 (MAC)以放置用户篡改默认为false如果设置为true将会引起性能降低validateRequest 是否验证用户输入中有跨站点脚本攻击和SQL注入式漏洞攻击默认为true如果出现匹配情况就会发 HttpRequestValidationException 异常对于包含有在线文本编辑器页面般自行验证用户输入而将此属性设为false下面就是个配置节点例子:<pages buffer="true" enableViewStateMac="true" validateRequest="false"/><sessionState>节点<sessionState>节点用于配置当前应用会话状态配置以下就是个常见配置:<sessionState cookieless="false" mode="InProc" timeout="30" />上面节点配置是设置在应用中启用Cookie并且指定会话状态模式为在进程中保存会话状态同时还指定了会话超时为30分钟<sessionState>节点Mode属性可以是以下几种值的:属性值 介绍说明Custom 使用自定义数据来存储会话状态数据InProc 默认值由辅助进程来存储会话状态数据Off 禁用会话状态SQLServer 使用进程外SQL Server数据库保存会话状态数据StateServer 使用进程外 状态服务存储状态信息般默认情况下使用InProc模式来存储会话状态数据这种模式好处是存取速度快缺点是比较占用内存所以不宜在这种模式下存储大型用户会话数据<globalization>节点:用于配置应用全球化设置此节点有几个比较重要属性分别如下:属性名 介绍说明fileEncoding 可选属性设置.aspx、.asmx 和 .asax 文件存储编码requestEncoding 可选属性设置客户端请求编码默认为UTF-8.responseEncoding 可选属性设置服务器端响应编码默认为UTF-8.以下就是应用中默认配置:<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8"/>配置文件读写操作虽然web.config文件是个XML文件但是由于权限原因它在部署中不能像操作普通XML文件那样进行修改在.net中提供了个类用于对web.config进行修改下面是针对web.config修改通用类代码:using ;using .Configuration;using .Web;using .Web.Configuration;/// <summary>/// ConfigurationOperator 摘要介绍说明/// </summary>public ConfigurationOperator:IDisposable{private Configuration config;public ConfigurationOperator:this(HttpContext.Current.Request.ApplicationPath){}public ConfigurationOperator( path){config = WebConfigurationManager.OpenWebConfiguration(path);}/// <summary>/// 设置应用配置节点如果已经存在此节点则会修改该节点值否则添加此节点/// </summary>/// <param name="key">节点名称</param>/// <param name="value">节点值</param>public void SetAppSetting( key, value){AppSettingsSection appSetting = (AppSettingsSection)config.GetSection("appSettings"); (appSetting.Settings[key] null)//如果不存在此节点则添加{appSetting.Settings.Add(key, value);}//如果存在此节点则修改{appSetting.Settings[key].Value = value;}}/// <summary>/// 设置数据库连接串节点如果不存在此节点则会添加此节点及对应值存在则修改/// </summary>/// <param name="key">节点名称</param>/// <param name="value">节点值</param>public void SetConnectionString( key, connectionString){ConnectionStringsSection connectionSetting =(ConnectionStringsSection)config.GetSection("connectionStrings");(connectionSetting.ConnectionStrings[key] null)//如果不存在此节点则添加{ConnectionStringSettings connectionStringSettings = ConnectionStringSettings(key, connectionString);connectionSetting.ConnectionStrings.Add(connectionStringSettings);}//如果存在此节点则修改{connectionSetting.ConnectionStrings[key].ConnectionString = connectionString;}}/// <summary>/// 保存所作修改/// </summary>public void Save{config.Save;config = null;}public void Dispose{(config != null){config.Save;}}}把上面代码存放到App_Code文件夹下我们在项目中就可以直接使用了我们通过个例子演示如果使用这个通用类对web.config进行设置新建个aspx页面下面是前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ConfigModyDemo.aspx.cs" Inherits="ConfigModyDemo" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml" ><head runat="server"><title>在部署后修改web.config例子</title></head><body><form id="form1" runat="server"><div><table border="0" cellpadding="0" cellspacing="0"><tr><td>类型</td><td>名称</td><td>值</td></tr><tr><td>配置</td><td><asp:TextBox ID="txtKey" runat="server"></asp:TextBox><asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtKey"ErrorMessage="*" Display="Dynamic"></asp:RequiredFieldValidator></td><td><asp:TextBox ID="txtAppSetting" runat="server"></asp:TextBox></td></tr><tr><td>数据库连接</td><td><asp:TextBox ID="txtConnectionName" runat="server"></asp:TextBox><asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="*" ControlToValidate="txtConnectionName"Display="Dynamic"></asp:RequiredFieldValidator></td><td style="height: 24px"><asp:TextBox ID="txtConnectionString" runat="server"></asp:TextBox></td></tr> <tr><td><asp:Button ID="btnMody" runat="server" _disibledevent=></table></div></form></body></html>编写后台代码有时可能需要增加对配置文件读写操作类所在dll引用如下:下面是后台代码:using ;using .Data;using .Configuration;using .Collections;using .Web;using .Web.Security;using .Web.UI;using .Web.UI.WebControls;using .Web.UI.WebControls.WebParts;using .Web.UI.HtmlControls;using .Web.Configuration;//注意添加这个命名空间public partial ConfigModyDemo : .Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}protected void btnMody_Click(object sender, EventArgs e){appSetting = txtAppSetting.Text;//appSetting子节点值connectionString = txtConnectionString.Text;//连接串key = txtKey.Text;//appSetting子节点KeyconnectionName = txtConnectionName.Text;//连接NameConfigurationOperator op = ConfigurationOperator;op.SetAppSetting(key, appSetting);op.SetConnectionString(connectionName, connectionString);op.Save;}}下面是运行界面:我们在上面表单中填入如下信息:假设此时web.config文件相关节点内容如下:<appSettings></appSettings><connectionStrings><add name="Conn" connectionString="Data Source=(local);Initial Catalog=AspNetStudy;Persist Security Info=True;User ID=sa;Password=sa" /></connectionStrings>我们点击“修改”按钮的后文件内容如下:<appSettings><add key="country" value="china" /></appSettings><connectionStrings><add name="Conn" connectionString="Data Source=(local);Initial Catalog=Study;UserID=sa;Password=sa"providerName=".Data.SqlClient" /></connectionStrings>从执行结果可以看出我们确实能做到修改和添加web.config中节点功能需要注意是在利用了某些版本控制软件Software的后(如Microsoft Visual SourceSafe)版本控制软件Software可能会将web.config设置为只读属性就会出现不能设置情况我们需要手动将web.config只读属性去掉才能设置web.config文件在实际部署项目时候就不会存在这个问题整理总结:web.config是应用中个很重要配置文件通过web.config文件可以方便我们进行开发和部署应用此外还能对进行些灵活控制在本篇中详细讲述了各节点作用在部署应用后权限原因不能按照XML方式进行修改web.config文件所以在本篇中还提供了个针对<appSettings>节点和<connectionStrings>节点设置通用类读者朋友可以根据实际项目需要对这个通用类进行完善和补充下篇笔者将带领大家进入到内部了解下内部运行机制这对于我们更加灵活地控制应用是非常有帮助2008-11-5 01:47周公(周金桥)最近事情比较多忙不过来了可能发表时间会比较长不过也好能有时间让我再研究下我表述方式2009-2-12 5:17:12疯狂代码 /。
一、认识Web.config文件Web.config 文件是一个XML文本文件,它用来储存 Web 应用程序的配置信息(如最常用的设置 Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中。
当你通过.NET新建一个Web应用程序后,默认情况下会在根目录自动创建一个默认的Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置。
如果你想修改子目录的配置设置,你可以在该子目录下新建一个Web.config文件。
它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。
(一).Web.Config是以XML文件规范存储,配置文件分为以下格式1.配置节处理程序声明特点:位于配置文件的顶部,包含在<configSections>标志中。
2.特定应用程序配置特点: 位于<appSetting>中。
可以定义应用程序的全局常量设置等信息.3.配置节设置特点: 位于<system.Web>节中,控制运行时的行为.4.配置节组特点: 用<sectionGroup>标记,可以自定义分组,可以放到<configSections>内部或其它<sectionGroup>标记的内部.(二).配置节的每一节1.<configuration>节根元素,其它节都是在它的内部.2.<appSetting>节此节用于定义应用程序设置项。
对一些不确定设置,还可以让用户根据自己实际情况自己设置用法:I.<appSettings><add key="Conntction" value="server=192.168.85.66;userid=sa;password=;database=Info;"/><appSettings>定义了一个连接字符串常量,并且在实际应用时可以修改连接字符串,不用修改程式代码. II.<appSettings><add key="ErrPage" value="Error.aspx"/><appSettings>定义了一个错误重定向页面.3.<compilation>节格式:<compilationdefaultLanguage="c#"debug="true"/>I.default language: 定义后台代码语言,可以选择C#和两种语言.IIdebug : 为true时,启动aspx调试;为false不启动aspx调试,因而可以提高应用程序运行时的性能。
一般程序员在开发时设置为true,交给客户时设置为false.4.<customErrors> 节格式:<customErrorsmode="RemoteOnly"defaultRedirect="error.aspx"<error statusCode="440" redirect="err440page.aspx"/><error statusCode="500" redirect="err500Page.aspx"/>/>I.mode : 具有On,Off,RemoteOnly 3种状态。
On表示始终显示自定义的信息; Off表示始终显示详细的错误信息; RemoteOnly表示只对不在本地Web服务器上运行的用户显示自定义信息.II.defaultRedirect: 用于出现错误时重定向的URL地址. 是可选的III.statusCode: 指明错误状态码,表明一种特定的出错状态.IV. redirect:错误重定向的URL.5.<globalization>节格式:<globalizationrequestEncoding="utf-8"responseEncoding="utf-8"fileEncoding="utf-8"/>I.requestEncoding: 它用来检查每一个发来请求的编码.II.responseEncoding: 用于检查发回的响应内容编码.III.fileEncoding: 用于检查aspx,asax等文件解析的默认编码.6.<sessionState> 节格式:<sessionStatemode="InProc"stateConnectionString="tcpip=127.0.0.1:42424"sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"cookieless="false"timeout="20"/>I.mode: 分为off,Inproc,StateServer,SqlServer几种状态这里有详细介绍此属性: /chengking/archive/2005/10/27/518079.aspxII. stateConnectionString :指定应用程序存储远程会话状态的服务器名,默认为本机III.sqlConnectionString: 当用会话状态数据库时,在这里设置连接字符串IV. Cookieless: 设置为true时,表示不使用cookie会话状态来标识客户;否则,相反. V. TimeOut: 用来定义会话状态存储的时间,超过期限,将自动终止会话.7.<authentication> 节格式:<authentication mode="Forms"><forms name=".ASPXUSERDEMO" loginUrl="Login.aspx" protection="All" timeout="30"/></authentication><authorization><deny users="?"/></authorization>I.Windows: 使用IIS验证方式II.Forms: 使用基于窗体的验证方式III.Passport: 采用Passport cookie验证模式IV.None: 不采用任何验证方式里面内嵌Forms节点的属性涵义:: 指定完成身份验证的Http cookie的名称.II.LoginUrl: 如果未通过验证或超时后重定向的页面URL,一般为登录页面,让用户重新登录III.Protection: 指定cookie数据的保护方式.可设置为: All None Encryption Validation四种保护方式a. All表示加密数据,并进行有效性验证两种方式b. None表示不保护Cookie.c. Encryption表示对Cookie内容进行加密d. validation表示对Cookie内容进行有效性验证IV. TimeOut: 指定Cookie的失效时间. 超时后要重新登录.在运行时对Web.config文件的修改不需要重启服务就可以生效(注:<processModel> 节例外)。
当然Web.config文件是可以扩展的。
你可以自定义新配置参数并编写配置节处理程序以对它们进行处理。
web.config 配置文件(默认的配置设置)以下所有的代码都应该位于<configuration><system.web>和</system.web></configuration>之间,出于学习的目的下面的示例都省略了这段XML标记。
1、<authentication> 节作用:配置 身份验证支持(为Windows、Forms、PassPort、None四种)。
该元素只能在计算机、站点或应用程序级别声明。
< authentication> 元素必需与<authorization> 节配合使用。
示例:以下示例为基于窗体(Forms)的身份验证配置站点,当没有登陆的用户访问需要身份验证的网页,网页自动跳转到登陆网页。
<authentication mode="Forms" ><forms loginUrl="logon.aspx" name=".FormsAuthCookie"/></authentication>其中元素loginUrl表示登陆网页的名称,name表示Cookie名称。
2、<authorization> 节作用:控制对URL 资源的客户端访问(如允许匿名用户访问)。
此元素可以在任何级别(计算机、站点、应用程序、子目录或页)上声明。
必需与<authentication> 节配合使用。
示例:以下示例禁止匿名用户的访问<authorization><deny users="?"/></authorization>注:你可以使用来获取已经过验证的当前的用户名;可以使用web.Security.FormsAuthentication.RedirectFromLoginPage方法将已验证的用户重定向到用户刚才请求的页面.具体的3、<compilation>节作用:配置 使用的所有编译设置。
默认的debug属性为“True”.在程序编译完成交付使用之后应将其设为False(Web.config文件中有详细说明,此处省略示例)4、<customErrors>作用:为 应用程序提供有关自定义错误信息的信息。
它不适用于XML Web services 中发生的错误。
示例:当发生错误时,将网页跳转到自定义的错误页面。
<customErrors defaultRedirect="ErrorPage.aspx" mode="RemoteOnly"></customErrors>其中元素defaultRedirect表示自定义的错误网页的名称。