【Asp.net精品源码栏目提醒】:网学会员--在 Asp.net精品源码编辑为广大网友搜集整理了:【精品】WebConfig配置 - 股票绩等信息,祝愿广大网友取得需要的信息,参考学习。
Web.config配置详解 一、认识Web.config文件 Web.config 文件是一个XML文本文件它用来储存
ASP.NET Web 应用程序的配置信息如最常用的设置
ASP.NET Web 应用程序的身份验证方式它可以出现在应用程序的每一个目录中。
当你通过.NET新建一个Web应用程序后默认情况下会在根目录自动创建一个默认的 Web.config文件包括默认的配置设置所有的子目录都继承它的配置设置。
如果你想修改子目录的配置设置你可以在该子目录下新建一个 Web.config文件。
它可以提供除从父目录继承的配置信息以外的配置信息也可以重写或修改父目录中定义的设置。
一.Web.Config是以XML文件规范存储配置文件分为以下格式 1.配置节处理程序声明 特点 位于配置文件的顶部包含在 ltconfigSectionsgt 标志中。
2.特定应用程序配置 特点: 位于 ltappSettinggt 中。
可以定义应用程序的全局常量设置等信息. 3.配置节设置 特点: 位于 ltsystem.Webgt 节中控制
Asp.net运行时的行为. 4.配置节组 特点: 用 ltsectionGroupgt 标记可以自定义分组可以放到 ltconfigSectionsgt 内部或其它 ltsectionGroupgt 标记的内部. 二.配置节的每一节 1. ltconfigurationgt 节 根元素其它节都是在它的内部. 2. ltappSettinggt 节 此节用于定义应用程序设置项。
对一些不确定设置还可以让用户根据自己实际情况自己设置 用法: I. ltappSettingsgt ltadd key quotConntction quot value quotserver192.168.85.66useridsapassworddatabaseInfo quot/gt ltappSettingsgt 定义了一个连接字符串常量并且在实际应用时可以修改连接字符串不用修改程式代码. II. ltappSettingsgt ltadd key quotErrPage quot value quotError.aspx quot/gt ltappSettingsgt 定义了一个错误重定向页面. 3. ltcompilationgt 节 格式: ltcompilation defaultLanguage quotc quot debug quottrue quot /gt I.default language: 定义后台代码语言可以选择C和VB.net两种语言. IIdebug : 为true时启动aspx调试 为false不启动aspx调试因而可以提高应用程序运行 时的性能。
一般程序员在开发时设置为true交给客户时设置为false. 4. ltcustomErrorsgt 节 格式: ltcustomErrors mode quotRemoteOnly quot defaultRedirect quoterror.aspx quot lterror statusCode quot440 quot redirect quoterr440page.aspx quot/gt lterror statusCode quot500 quot redirect quoterr500Page.aspx quot/gt /gt I.mode : 具有OnOffRemoteOnly 3种状态。
On表示始终显示自定义的信息 Off表示始终显示详细的
asp.net错误信息 RemoteOnly表示只对不在本地Web服务器上运行的用户显示自定义信息. II.defaultRedirect: 用于出现错误时重定向的URL地址. 是可选的 III.statusCode: 指明错误状态码表明一种特定的出错状态. IV. redirect:错误重定向的URL. 5. ltglobalizationgt 节 格式: ltglobalization requestEncoding quotutf-8 quot responseEncoding quotutf-8 quot fileEncoding quotutf-8 quot /gt I.requestEncoding: 它用来检查每一个发来请求的编码. II.responseEncoding: 用于检查发回的响应内容编码. III.fileEncoding: 用于检查aspxasax等文件解析的默认编码. 6. ltsessionStategt 节 格式: ltsessionState mode quotInProc quot stateConnectionString quottcpip127.0.0.1:42424 quot sqlConnectionString quotdata source127.0.0.1Trusted_Connectionyes quot cookieless quotfalse quot timeout quot20 quot /gt I.mode: 分为offInprocStateServerSqlServer几种状态 这里有详细介绍此属性: http://blog.csdn.net/chengking/archive/2005/10/27/518079.aspx II. stateConnectionString :指定
Asp.net应用程序存储远程会话状态的服务器名默认为本机 III.sqlConnectionString: 当用会话状态数据库时在这里设置连接字符串 IV. Cookieless: 设置为true时表示不使用cookie会话状态来标识客户 否则相反. V. TimeOut: 用来定义会话状态存储的时间超过期限将自动终止会话. 7. ltauthenticationgt 节 格式: ltauthentication mode quotForms quotgt ltforms name quot.ASPXUSERDEMO quot loginUrl quotLogin.aspx quot protection quotAll quot timeout quot30 quot/gt lt/authenticationgt ltauthorizationgt ltdeny users quot quot/gt lt/authorizationgt I.Windows: 使用IIS验证方式 II.Forms: 使用基于窗体的验证方式 III.Passport: 采用Passport cookie验证模式 IV.None: 不采用任何验证方式 里面内嵌Forms节点的属性涵义: I.Name: 指定完成身份验证的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文件的修改不需要重启服务就可以生效注 ltprocessModelgt 节例外。
当然Web.config文件是可以扩展的。
你可以自定义新配置参数并编写配置节处理程序以对它们进行处理。
web.config配置文件默认的配置设置以下所有的代码都应该位于 ltconfigurationgt ltsystem.webgt 和 lt/system.webgt lt/configurationgt 之间出于学习的目的下面的示例都省略了这段XML标记。
1、 ltauthenticationgt 节 作用配置
ASP.NET 身份验证支持为Windows、Forms、PassPort、None四种。
该元素只能在计算机、站点或应用程序级别声明。
lt authenticationgt 元素必需与 ltauthorizationgt 节配合使用。
示例 以下示例为基于窗体Forms的身份验证配置站点当没有登陆的用户访问需要身份验证的网页网页自动跳转到登陆网页。
ltauthentication mode quotForms quot gt ltforms loginUrl quotlogon.aspx quot name quot.FormsAuthCookie quot/gt lt/authenticationgt 其中元素loginUrl表示登陆网页的名称name表示Cookie名称。
2、 ltauthorizationgt 节 作用控制对 URL 资源的客户端访问如允许匿名用户访问。
此元素可以在任何级别计算机、站点、应用程序、子目录或页上声明。
必需与 ltauthenticationgt 节配合使用。
示例以下示例禁止匿名用户的访问 ltauthorizationgt ltdeny users quot quot/gt lt/authorizationgt 注你可以使用user.identity.name来获取已经过验证的当前的用户名可以使用web.Security.FormsAuthentication.RedirectFromLoginPage方法将已验证的用户重定向到用户刚才请求的页面.具体的 3、 ltcompilationgt 节 作用配置
ASP.NET 使用的所有编译设置。
默认的debug属性为“True”.在程序编译完成交付使用之后应将其设为FalseWeb.config文件中有详细说明此处省略示例 4、 ltcustomErrorsgt 作用为
ASP.NET 应用程序提供有关自定义错误信息的信息。
它不适用于 XML Web services 中发生的错误。
示例当发生错误时将网页跳转到自定义的错误页面。
ltcustomErrors defaultRedirect quotErrorPage.aspx quot mode quotRemoteOnly quotgt lt/customErrorsgt 其中元素defaultRedirect表示自定义的错误网页的名称。
mode元素表示对不在本地 Web 服务器上运行的用户显示自定义友好的信息。
5、 lthttpRuntimegt 节 作用配置
ASP.NET HTTP 运行库设置。
该节可以在计算机、站点、应用程序和子目录级别声明。
示例控制用户上传文件最大为4M最长时间为60秒最多请求数为100 lthttpRuntime maxRequestLength quot4096 quot executionTimeout quot60 quot appRequestQueueLimit quot100 quot/gt ConfigurationSettings.AppSettings quotscon quot
ASP.NET中使用web.config配置web应用程序中的数据库连接 你会经常碰到这种情况几乎在网站的每个页面上存储一些全局处理信息。
理想的做法是将这些信息一次性的集中存储在资料档案库中而不是在网站的每个页面上都重复这样的操作。
比如说数据库连接串就是这样的信息如果这些信息不是集中存储在特定区域中而是在网站的每个需要连接数据库的页面上手工输入可以设想当数据库连接串改动时将会令人头痛你必须遍历网站中所有连接数据库的页面去修改 在
ASP.NET中通过Web.config你可为使用 ltappSettingsgt 标记在这个标记中你可用 ltadd ... /gt 标记定义0到多个设置。
本文中我们主要讨论了如何使用web.config来配置一个web应用程序中的数据库连接。
web.config文件是标准的xml文件我们可以使用它来为一台机器下的每一个web应用程序或某个应用程序或一个目录下的
asp.net页面来进行设置当然它也可以为一个单独的web页面进行设置。
如网站的主目录是inetpubwwwroot那么我们将web.config放置于其下那么这个网站中的应用程序将被web.config中的设置所影响。
e.g. ltxml versionquot1.0quot encodingquotgb2312quot gt ltconfigurationgt ltsystem.webgt ltcompilation defaultlanguagequotvbquot debugquottruequot /gt ltcustomerrors modequotremoteonlyquot defaultredirectquotjs/error.htmquotgt lterror statuscodequot404quot redirectquotjs/filenotfound.aspxquot /gt lterror statuscodequot500quot redirectquotjs/error.htmquot /gt lt/customerrorsgt ltauthentication modequotwindowsquot /gt ltauthorizationgt ltallow usersquotquot /gt lt/authorizationgt lthttpruntime maxrequestlengthquot4000quot usefullyqualifiedredirecturlquottruequot executiontimeoutquot45quot /gt lttrace enabledquotfalsequot requestlimitquot10quot pageoutputquotfalsequot tracemodequotsortbytimequot localonlyquottruequot /gt ltsessionstate modequotinprocquot stateconnectionstringquottcpip127.0.0.1:43444quot cookielessquotfalsequot timeoutquot20quot /gt ltglobalization requestencodingquotgb2312quot responseencodingquotgb2312quot fileencodingquotgb2312quot /gt lt/system.webgt ltappsettingsgt ltadd keyquotconnstringquot valuequotuidflashpassword3.1415926databasenewsserverlocalquot /gt lt/appsettingsgt lt/configurationgt 这里我们讨论一下如何在web.config中设置数据库连接。
1、连接一个数据库 在web.config中的ltconfigurationgt后加入 ltappsettingsgt ltadd keyquotconnstringquot valuequotuidflashpassword3.1415926databasenewsserverlocalquot /gt lt/appsettingsgt 在程序中你可以使用以下代码来使用web.config中的设置 -----vb.net----- imports system.configuration dim myvar as string myvarconfigurationsettings.appsettingsquotconnstringquot -----c----- using system.configuration string myvar myvarconfigurationsettings.appsettingsquotconnstringquot 2、连接多个数据库 同理那就是使用多个不同的key值来设置 3、设置不同子目录下应用程序的数据库链接 这是一个很有意思的方法在设置前先说明一下它的用途 如果在一个虚拟目录下有多个子目录每一个子目录下下的web应用程序都需要连接不同的数据库这如何做呢 一种方法是在每一个子目录下分别建立一个web.config用它来设置这个目录下的数据库连接。
但这种方法的问题是需要维护每一个了目录下的web.config。
方法二是只在虚拟目录下建立一个web.config在它里面设置每一个子目录下的应用程序的数据库连接。
说到这里你会想到上面的第二种方法使用多个不同的key值来设置这的确是一个办法。
这里我想说明的是另一种方法在虚拟目录下布置web.config在其中使用location标记使用同一个key值来连接数据库这样做的好处很明显因为用同一个key值将导致在所有目录下的应用程序中都可以使用共同的语句来连接数据库这在程序以后发生位置迁移时并不用修改程序中连接数据库的语句。
具体设置如下 ltlocation pathquotnewsquotgt ltappsettingsgt ltadd keyquotconnstringquot valuequotuidflyangelpassword3.1415926databasenewsserverlocalquot /gt lt/appsettingsgt lt/locationgt ltlocation pathquotbbsquotgt ltappsettingsgt ltadd keyquotconnstringquot valuequotuidflyangelpassword3.1415926databasebbsserverlocalquot /gt lt/appsettingsgt lt/locationgt ltlocation pathquotsoftquotgt ltappsettingsgt ltadd keyquotconnstringquot valuequotuidflyangelpassword3.1415926databasesoftserverlocalquot /gt lt/appsettingsgt lt/locationgt 注上例中news、bbs、soft分别是虚拟目录下的子目录。
程序中使用连接时采用下面的方法 public function getconnectionstring configurationsettings.appsettings.itemquotconnstringquot end sub 最后需要说明的一点是为了有效地利用.config文件你应当创建标准的键名和值定义供所有的应用程序开发人员所用。
这样就可以让同一项目的开发人员采用公共的项目设置。
这些标准在部署应用程序和将其转化为产品的时候非常有用。
web.config中的session配置详解 打开某个应用程序的配置文件Web.config后我们会发现以下这段 lt sessionState modequotInProcquot stateConnectionStringquottcpip127.0.0.1:42424quot sqlConnectionStringquotdata source127.0.0.1Trusted_Connectionyesquot cookielessquotfalsequot timeoutquot20quot /gt 这一段就是配置应用程序是如何存储Session信息的了。
我们以下的各种操作主要是针对这一段配置展开。
让我们先看看这一段配置中所包含的内容的意思。
sessionState节点的语法是这样的 lt sessionState modequotOffInProcStateServerSQLServerquot cookielessquottruefalsequot timeoutquotnumber of minutesquot stateConnectionStringquottcpipserver:portquot sqlConnectionStringquotsql connection stringquot stateNetworkTimeoutquotnumber of secondsquot /gt 必须有的属性是 属性 选项 描述 mode 设置将Session信息存储到哪里 Off 设置为不使用Session功能 InProc 设置为将Session存储在进程内就是ASP中的存储方式这是默认值。
StateServer 设置为将Session存储在独立的状态服务中。
SQLServer 设置将Session存储在SQL Server中。
可选的属性是 属性 选项 描述 cookieless 设置客户端的Session信息存储到哪里 ture 使用Cookieless模式 false 使用Cookie模式这是默认值。
timeout 设置经过多少分钟后服务器自动放弃Session信息。
默认为20分钟 stateConnectionString 设置将Session信息存储在状态服务中时使用的服务器名称和端口号例如quottcpip127.0.0.1:42424”。
当mode的值是StateServer是这个属性是必需的。
sqlConnectionString 设置与SQL Server连接时的连接字符串。
例如quotdata sourcelocalhostIntegrated SecuritySSPIInitial Catalognorthwindquot。
当mode的值是SQLServer时这个属性是必需的。
stateNetworkTimeout 设置当使用StateServer模式存储Session状态时经过多少秒空闲后断开Web服务器与存储状态信息的服务器的TCP/IP连接的。
默认值是10秒钟。
ASP.NET中客户端Session状态的存储 在我们上面的Session模型简介中大家可以发现Session状态应该存储在两个地方分别是客户端和服务器端。
客户端只负责保存相应网站的SessionID而其他的Session信息则保存在服务器端。
在ASP中客户端的SessionID实际是以Cookie的形式存储的。
如果用户在浏览器的设置中选择了禁用Cookie那末他也就无法享受Session的便利之处了甚至造成不能访问某些网站。
为了解决以上问题在
ASP.NET中客户端的Session信息存储方式分为Cookie和Cookieless两种。
ASP.NET中默认状态下在客户端还是使用Cookie存储Session信息的。
如果我们想在客户端使用Cookieless的方式存储Session信息的方法如下 找到当前Web应用程序的根目录打开Web.Config文件找到如下段落 lt sessionState modequotInProcquot stateConnectionStringquottcpip127.0.0.1:42424quot sqlConnectionStringquotdata source127.0.0.1Trusted_Connectionyesquot cookielessquotfalsequot timeoutquot20quot /gt 这段话中的cookielessquotfalsequot改为cookielessquottruequot这样客户端的Session信息就不再使用Cookie存储了而是将其通过URL存储。
关闭当前的IE打开一个新IE重新访问刚才的Web应用程序就会看到类似下面的样子 其中http://localhost/MyTestApplication/ulqsek45heu3ic2a5zgdl245/default.aspx中黑体标出的就是客户端的Session ID。
注意这段信息是由IIS自动加上的不会影响以前正常的连接。
ASP.NET中服务器端Session状态的存储 准备工作 为了您能更好的体验到实验现象您可以建立一个叫做SessionState.aspx的页面然后把以下这些代码添加到lt bodygtlt /bodygt中。
lt scriptrunatquotserverquotgt Sub Session_Addsender As Object e As EventArgs SessionquotMySessionquot text1.Value span1.InnerHtml quotSession data updated lt PgtYour session contains: lt font colorredgtquot amp SessionquotMySessionquot.ToString amp quotlt /fontgtquot End Sub Sub CheckSessionsender As Object eAs EventArgs If SessionquotMySessionquotIs Nothing Then span1.InnerHtml quotNOTHING SESSION DATA LOSTquot Else span1.InnerHtml quotYour session contains: lt font colorredgtquot amp SessionquotMySessionquot.ToString amp quotlt /fontgtquot End If End Sub lt /scriptgt lt formrunatquotserverquotidquotForm2quotgt lt inputidquottext1quottypequottextquotrunatquotserverquotnamequottext1quotgt lt inputtypequotsubmitquotrunatquotserverquotOnServerClickquotSession_Addquot valuequotAdd to Session Statequot idquotSubmit1quotnamequotSubmit1quotgt lt inputtypequotsubmitquotrunatquotserverquotOnServerClickquotCheckSessionquot valuequotView Session Statequot idquotSubmit2quotnamequotSubmit2quotgt lt /formgt lt hrsizequot1quotgt lt fontsizequot6quotgtlt spanidquotspan1quotrunatquotserverquot /gtlt /fontgt 这个SessionState.aspx的页面可以用来测试在当前的服务器上是否丢失了Session信息。
将服务器Session信息存储在进程中 让我们来回到Web.config文件的刚才那段段落中 lt sessionState modequotInProcquot stateConnectionStringquottcpip127.0.0.1:42424quot sqlConnectionStringquotdata source127.0.0.1Trusted_Connectionyesquot cookielessquotfalsequot timeoutquot20quot /gt 当mode的值是InProc时说明服务器正在使用这种模式。
这种方式和以前ASP中的模式一样就是服务器将Session信息存储在IIS进程中。
当IIS关闭、重起后这些信息都会丢失。
但是这种模式也有自己最大好处就是性能最高。
应为所有的Session信息都存储在了IIS的进程中所以IIS能够很快的访问到这些信息这种模式的性能比进程外存储Session信息或是在SQL Server中存储Session信息都要快上很多。
这种模式也是
ASP.NET的默认方式。
好了现在让我们做个试验。
打开刚才的SessionState.aspx页面随便输入一些字符使其存储在Session中。
然后让我们让IIS重起。
注意并不是使当前的站点停止再开始而是在IIS中本机的机器名的节点上点击鼠标右键选择重新启动IIS。
想当初使用NT4时重新启动IIS必须要重新启动计算机才行微软真是amp返回到SessionState.aspx页面中检查刚才的Session信息发现信息已经丢失了。
将服务器Session信息存储在进程外 首先让我们来打开管理工具-gt服务找到名为
ASP.NET State Service的服务启动它。
实际上这个服务就是启动一个要保存Session信息的进程。
启动这个服务后你可以从Windows任务管理器-gt进程中看到一个名为aspnet_state.exe的进程这个就是我们保存Session信息的.
上一篇:
Aspnet网站发布过程
下一篇:
成长路上,依然坎坷