本文主要对什么是WebConfig?以及其自身特性相关说明和其本身几个主要节点说明,最后举例说明WebConfig在应用程序中的相关应用。
一个东西从无到有,总有其存在的价值和意义!
而对Web.config配置文件来说来说,其主要的作用用来储存ASP.NET Web应用程序作应用程序相关配置信息。什么是配置信息
比如:应用程序身份验证方式、引用程序集、出错后指引、URL重写、Session时期、编码方式等等,一方面方便修改,比如验证图片格式等,另外一方面,方便迁移,比如数据库更改,同时,也方便其他组件进行组合,配置。
本文主要讲述:
1, 配置文件的优先级查找
2, 配置文件节点说明
3, 配置文件的相关应用。
1,配置文件的优先级查找
.net提供呢一个针对当前机器的WinForm程序和Asp.Net应用程序的配置,名字叫machine.config,它位于%windir%/Microsoft.NET/Framework/v2.0.50727/CONFIG/文件中,
Asp.net网站IIS启动的时候,会加载配置文件里面的配置信息,并会缓存这些信息!,一旦在运行过程中Asp.net监视配置文件的变化,一旦编辑呢这些配置文件,就会重新读取这些配置文件信息并且缓存。
当我们要读取某一个配置节点的时候,会按照下面的顺序。
当前页面所在的Web.config,没有返回到上一目录,直到跟目录,如果都不存在该节点获得Web.config文件都不存在,就查找本机器的
%windir%/Microsoft.NET/Framework/v2.0.50727/CONFIG/web.config,如果还没有就查找到%windir%/Microsoft.NET/Framework/v2.0.50727/CONFIG/machine.config,如果都没有就返回null。
2,相关配置节点的解说。
Web.config是一个Xml文件,其主要的节点有
2.1- configSections
指定配置节和命名空间声明。clear:移除对继承的节和节组的所有引用,只允许由当前 section 和 sectionGroup 元素添加的节和节组。remove:移除对继承的节和节组的引用。section:定义配置节处理程序与配置元素之间的关联。sectionGroup:定义配置节处理程序与配置节之间的关联。
2.2appSettings
appSettings是应用程序设置,可以定义应用程序的全局常量设置等信息。
2.3 connectionStrings
连接字符串设置
2.4 system.web
提供页面跳转,身份验证,URL重新声明等
2.5 system.webServer
该节替换在 httpHandlers 和 httpModules 节中添加的与 AJAX 相关的 HTTP 处理程序和模块。该节使 IIS 7.0 在集成模式下运行时可使用这些处理程序和模块。在iis7.0 下运行 ASP.NET AJAX 需要 system.webServer节。对早期版本的 IIS 来说则不需要此节。
2.6 runtime
提供运行时,所需要的版本和名称
以下是一个Web.config的说明
4, 配置文件相关应用
1.获得appSettings和connectionStrings设置的信息
ConfigurationManager.AppSettings[""].ToString();
ConfigurationManager.ConnectionStrings[""].ToString();
其中ConfigurationManager在System.Configuration命名空间里面
2.如何配置用户自定义错误信息,包括404,,403等,就是程序意外报错后,如何处理?
其中Mode有三个参数ON,Off,RemoteOnly
On 表示在本地和远程用户都会看到自定义错误信息。
Off 禁用自定义错误信息,本地和远程用户都会看到详细的错误信息。
RemoteOnly 表示本地用户将看到详细错误信息,而远程用户将会看到自定义错误信息。
defaultRedirect属性是一个可选属性,表示应用程序发生错误时重定向到的默认URL,如果没有指定该属性则显示一般性错误
当Mode为On时候,Error定义的节点才会启动
3,如何不让访问某一文件夹里面的内容?
使用
其中System.Web.HttpForbiddenHandler 表示用户不能查看或者下载相关的文件。
4,如何设置全局编码?
用于配置应用程序的全球化设置。此节点有几个比较重要的属性,分别如下:
属性名 说明
fileEncoding 可选属性。设置.aspx、.asmx和 .asax文件的存储编码。
requestEncoding 可选属性。设置客户端请求的编码,默认为UTF-8.
responseEncoding 可选属性。设置服务器端响应的编码,默认为UTF-8.
以下就是asp.net应用程序中的默认配置:
1.
下面附录常规Web.config的解说。
xmlversion="1.0"?>
<configuration>
<configSections>
<sectionGroupname="system.web.extensions"type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<sectionGroupname="scripting"type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<sectionname="scriptResourceHandler"type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"requirePermission="false"allowDefinition="MachineToApplication"/>
sectionGroup>
sectionGroup>
<sectionname="rewriter"type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"/>
configSections>
<appSettings>
<addkey="ErrPage"value="http://www.cnblogs.com"/>
appSettings>
<connectionStrings>
<addname="sqlConnectionString"connectionString=""/>
connectionStrings>
<locationpath="Default.aspx"allowOverride="false">
<system.web>
<identityimpersonate="false" />
<pagesmasterPageFile="Index"theme="Default"buffer="true"enableViewStateMac="true"validateRequest="false"enableViewState="false">
<controls>controls>
<namespaces>namespaces>
pages>
<customErrorsdefaultRedirect="Err.html"mode="RemoteOnly">
<errorstatusCode="403"redirect="NoAccess.htm" />
<errorstatusCode="404"redirect="FileNotFound.htm" />
customErrors>
<traceenabled="true"localOnly="false"pageOutput="true"requestLimit="15"traceMode="SortByCategory"/>
<compilationdebug="true"defaultLanguage="c#"batch="false">
<assemblies>
<addassembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<addassembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<addassembly="System.Web.Extensions.Design, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<addassembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<addassembly="System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<addassembly="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<addassembly="System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<addassembly="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<addassembly="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<addassembly="System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<addassembly="System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
assemblies>
<buildProviders>
<addextension=".aspx"type="System.Web.Compilation.PageBuildProvider"/>
<addextension=".ascx"type="System.Web.Compilation.UserControlBuildProvider"/>
<addextension=".master"type="System.Web.Compilation.MasterPageBuildProvider"/>
<addextension=".asmx"type="System.Web.Compilation.WebServiceBuildProvider"/>
<addextension=".ashx"type="System.Web.Compilation.WebHandlerBuildProvider"/>
<addextension=".soap"type="System.Web.Compilation.WebServiceBuildProvider"/>
<addextension=".resx"type="System.Web.Compilation.ResXBuildProvider"/>
<addextension=".resources"type="System.Web.Compilation.ResourcesBuildProvider"/>
<addextension=".wsdl"type="System.Web.Compilation.WsdlBuildProvider"/>
<addextension=".xsd"type="System.Web.Compilation.XsdBuildProvider"/>
<addextension=".rdlc"type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
buildProviders>
compilation>
<authenticationmode="Forms">
<formsname=".ASPXUSERDEMO"loginUrl="Login.aspx"protection="All"timeout="30"/>
authentication>
<authorization>
<allowusers="*"/>
<denyusers="weipeng"/>
<allowusers="aa"roles="aa" />
authorization>
<globalizationrequestEncoding="gb2312"responseEncoding="gb2312"fileEncoding="gb2312" />
<sessionStatemode="InProc"stateConnectionString="tcpip=127.0.0.1:42424"sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"cookieless="false"timeout="20">sessionState>
<sessionPageStatehistorySize="9"/>
<httpRuntimeappRequestQueueLimit="100"executionTimeout="80"maxRequestLength="40960"useFullyQualifiedRedirectUrl="false"/>
<httpModules>
<addname="OutputCache"type="System.Web.Caching.OutputCacheModule" />
<addname="Session"type="System.Web.SessionState.SessionStateModule" />
<addname="WindowsAuthentication"type="System.Web.Security.WindowsAuthenticationModule" />
<addname="FormsAuthentication"type="System.Web.Security.FormsAuthenticationModule" />
<addname="PassportAuthentication"type="System.Web.Security.PassportAuthenticationModule" />
<addname="RoleManager"type="System.Web.Security.RoleManagerModule" />
<addname="UrlAuthorization"type="System.Web.Security.UrlAuthorizationModule" />
<addname="FileAuthorization"type="System.Web.Security.FileAuthorizationModule" />
<addname="AnonymousIdentification"type="System.Web.Security.AnonymousIdentificationModule" />
<addname="UrlRewriter"type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter" />
<addname="Profile"type="System.Web.Profile.ProfileModule" />
httpModules>
<httpHandlers>
<removeverb="*"path="*.asmx"/>
<addverb="*"path="*.asmx"validate="false"type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<addverb="*"path="*_AppService.axd"validate="false"type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<addverb="GET,HEAD"path="ScriptResource.axd"type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"validate="false"/>
<addverb="POST,GET"path="ajaxpro/*.ashx"type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
httpHandlers>
<httpCookieshttpOnlyCookies="false"requireSSL="false"/>
<webServices>
<protocols>
<add/>
protocols>
webServices>
<caching>
<cachedisableMemoryCollection = "false"disableExpiration = "false"privateBytesLimit = "0"percentagePhysicalMemoryUsedLimit = "90"privateBytesPollTime = "00:02:00"/>
<outputCacheSettings>
<outputCacheProfiles>
<addname="ServerOnly"duration="60"varyByCustom="browser"location="Server" />
outputCacheProfiles>
outputCacheSettings>
caching>
system.web>
location>
<system.net>
<mailSettings>
<smtpfrom="sy">
<networkhost="Gao"password=""userName="" />
smtp>
mailSettings>
<requestCachingdisableAllCaching="true">requestCaching>
<defaultProxy>
<proxyusesystemdefault="True"proxyaddress="http://192.168.1.10:3128"bypassonlocal="True"/>
<bypasslist>
<addaddress="" />
bypasslist>
defaultProxy>
system.net>
<system.webServer>
<validationvalidateIntegratedModeConfiguration="false"/>
<modules>
<addname="ScriptModule"preCondition="integratedMode"type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
modules>
<handlers>
<removename="WebServiceHandlerFactory-Integrated"/>
<addname="ScriptHandlerFactory"verb="*"path="*.asmx"preCondition="integratedMode"type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<addname="ScriptHandlerFactoryAppServices"verb="*"path="*_AppService.axd"preCondition="integratedMode"type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<addname="ScriptResource"preCondition="integratedMode"verb="GET,HEAD"path="ScriptResource.axd"type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
handlers>
system.webServer>
<system.web.extensions>
<scripting>
<webServices>
<jsonSerializationmaxJsonLength="5000"/>
webServices>
scripting>
system.web.extensions>
<system.serviceModel>
<services>
<servicename="WCFStudent.WCFStudentText"behaviorConfiguration="ServiceBehavior">
<endpointaddress=""binding="wsHttpBinding"contract="WCFStudent.IStuServiceContract">
<identity>
<dnsvalue="localhost"/>
identity>
endpoint>
<endpointaddress="mex"binding="mexHttpBinding"contract="IMetadataExchange"/>
service>
services>
<behaviors>
<serviceBehaviors>
<behaviorname="ServiceBehavior">
<serviceMetadatahttpGetEnabled="true"/>
<serviceDebugincludeExceptionDetailInFaults="false"/>
behavior>
serviceBehaviors>
behaviors>
system.serviceModel>
<rewriter>
<rewriteurl="~/user/u(.+).aspx"to="~/user/index.aspx?r=$1" />
<rewriteurl="~/ask/q(.+).aspx"to="~/home/ask/content.aspx?id=$1" />
<rewriteurl="~/blog/b(.+).aspx"to="~/home/blog/article.aspx?r=$1" />
<rewriteurl="~/news/n(.+).aspx"to="~/home/news/content.aspx?nid=$1" />
<rewriteurl="~/default.aspx"to="~/home/ram/net.aspx" />
rewriter>
configuration>