Web.config 相关内容简述

     本文主要对什么是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,如果没有指定该属性则显示一般性错误

ModeOn时候,Error定义的节点才会启动

3,如何不让访问某一文件夹里面的内容?

   使用节点,节点用于根据用户请求的URLHTTP谓词将用户的请求交给相应的处理程序。可以在配置级别的任何层次配置此节点,也就是说可以针对某个特定目录下指定的特殊文件进行特殊处理。

   

     

其中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>

 

 

你可能感兴趣的:(WebConfig)