1 / 32

Web Config File 概述

Web Config File 概述. --- web-config 综述. 龚 志. J. Gary Gong. 2007.07.31. 配置文件. Q. Machine.config Web.config App.exe.config Machine.config 用于将计算机范围的策略应用到本地计算机上运行的所有 .NET Framework 应用程序。 Web.config 文件自定义单个应用程序的设置。. 配置文件的位置. Q. Machine.config ( 每台计算机每个 .NET Framework 安装版一个 )

Download Presentation

Web Config File 概述

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Web Config File 概述 --- web-config综述 龚 志 J Gary Gong 2007.07.31

  2. 配置文件 Q Machine.config Web.config App.exe.config Machine.config 用于将计算机范围的策略应用到本地计算机上运行的所有 .NET Framework 应用程序。 Web.config 文件自定义单个应用程序的设置。

  3. 配置文件的位置 Q Machine.config (每台计算机每个 .NET Framework 安装版一个) %windir%\Microsoft.NET\Framework\{version}\CONFIG Web.config(每个应用程序有零个、一个或多个) \inetpub\wwwroot\web.config\inetpub\wwwroot\YourApplication\web.config

  4. 配置文件的特点 config Machine.config 由高到低 Web/App.config 依次向上匹配配置文件 继承 重写 Dir/.config 作用有效区域在本目录以及子目录

  5. ASP.NET 配置文件层次结构和继承 Q ASP.NET 配置文件称为 Web.config 文件,它们可以出现在 ASP.NET 应用程序的多个目录中。 • 配置结构的具体表现: • ASP.NET 配置层次结构具有下列特征: • 配置文件应用于配置文件所在的目录及其所有子目录中。 • 允许您将配置数据放在将使它具有适当范围(整台计算机、所有的 Web 应用程序、单个应用程序或该应用程序中的子目录)的位置。 • 允许重写从配置层次结构中的较高级别继承的配置设置。还允许锁定配置设置,以防止它们被较低级别的配置设置所重写。 • 将配置设置的逻辑组织成节的形式。(XML的特征) 我们可以在整个应用程序目录中分发 ASP.NET 配置文件,以便以继承层次结构来配置 ASP.NET 应用程序。 使用这种结构,可以在适当的目录级别实现应用程序所需级别的配置详细信息,而不影响较高目录级别中的配置设置。 具体的说,就是子目录可以继承父目录的配置设置,并且还可以自定义的进行更加深入地配置设置。

  6. 配置继承 Q 所有的 .NET Framework 应用程序都从一个名为systemroot\Microsoft .NET \Framework\versionNumber\CONFIG\Machine.config 的文件继承基本配置设置和默认值。 Machine.config 文件用于服务器级的配置设置。其中的某些设置不能在位于层次结构中较低级别的配置文件中被重写。 .NET 客户端应用程序(控制台和 Windows 应用程序)使用名为 AppName.config 的配置文件来重写继承的设置。 ASP.NET 应用程序使用名为 Web.config 的配置文件来重写继承的设置。 ASP.NET 配置层次结构的根是一个称为根 Web.config 文件的文件,它与 Machine.config 文件位于同一个目录中。根 Web.config 文件继承 Machine.config 文件中的所有设置。根 Web.config 文件包括应用于所有运行某一具体版本的 .NET Framework 的 ASP.NET 应用程序的设置。由于每个 ASP.NET 应用程序都从根 Web.config 文件那里继承默认配置设置,因此只需为重写默认设置的设置创建 Web.config 文件。

  7. Q 集合元素中的继承   某些配置元素是集合,例如,namespaces 元素和 customErrors 元素。   在集合中,通常通过 add 子元素向集合中添加配置设置,通过 remove 子元素按键名移除配置设置,或者可以通过 clear 子元素清除整个集合。 值得说明的是,除非允许使用重复项,否则,在子配置文件中添加的设置将重写父配置文件中同一键名的设置。 如: <namespaces> <add namespace="System" /> <add namespace="System.Web.SessionState" /> <add namespace="System.Web.Security" /> <add namespace="System.Web.Profile" /> <add namespace="System.Web.UI" /> <remove namespace ="System.Web.UI" /> </namespaces>

  8. 集合元素中继承de例子 Q dirFather web-config 现在,我们请求这个文件 dirFather/dirMyself/dirSon1/webNone.aspx 而在dirSon1的目录中,没有这个文件 那么系统将会怎么办? dirBrother dirMyself web-config ASP.NET 将搜索 statusCode 属性等于“404”的 customErrors 的 error 元素(ASP.NET 设置架构)元素。一旦 ASP.NET 在配置设置中找到 404 错误,将 redirect 属性中的 URL 作为响应返回。 web-config dirSon1 dirSon2 web1.aspx web2.aspx <customErrors mode="On">   <error statusCode="404" redirect="notfound.aspx"/>  </customErrors> web-config

  9. Q 限制 ASP.NET 继承   如果需要限制配置设置的继承,以增强应用程序的性能、保持高可靠性并简化管理。 限制功能由 allowOverride、lockAttributes、lockAllAttributesExcept、lockAllElementsExcept、lockItem 和 lockElements 属性控制。 锁定除指定属性 以外的所有属性 获取或设定 是否锁定该元素 是否可被重写 锁定除指定元素 以外的所有元素 是否锁定 获取被锁定 的元素的集合 详细可以查看msdn中[Web开发.net 资源]

  10. Q 配置设置的范围   配置设置具有不同的范围 - 有些具有全局范围,有些仅对应用程序范围(根 Web.config 文件或 Machine.config 文件)有效。   配置节的范围是在 Machine.config 文件中的 configSections 的 section 元素(常规设置架构)元素的 allowDefinition 属性中为包含在 ASP.NET 中的所有节定义的。例如,authentication 元素(ASP.NET 设置架构)元素具有 MachineToApplication 元素的 allowDefinition 属性。这意味着,authentication 元素可以在应用程序级别的 Machine.config 文件、根 Web.config 文件和 Web.config 文件中设置。如果它是在子目录级别设置的,则会引发错误。如果没有为某个节定义 allowDefinition 属性,则默认值为 Everywhere。   “元素信息”表中“可配置的位置”旁边列出了 ASP.NET 配置设置 和 常规配置设置 (ASP.NET) 中每个元素的配置设置范围。 下表列出了每个文件在配置层次结构中的级别、每个文件的名称以及对每个文件的重要继承特征的说明。

  11. Q 运行时计算配置设置   当服务器接收对特定 Web 资源的请求时,ASP.NET 使用位于所请求 URL 的虚拟目录路径中的所有配置文件按层次结构计算该资源的配置设置。本地配置设置将重写父配置文件中的设置。   这些设置计算一次,随后将缓存以供后续请求使用。ASP.NET 自动监视对文件进行的更改,并在该文件的层次结构内的任何配置文件发生更改时重新计算缓存。当服务器收到对特定 URL 的请求时,ASP.NET 将使用缓存中的配置设置层次结构来找到所请求的资源。   当然,只有配置节元素中包括 restartOnExternalChanges="false" 属性,或者配置设置包含在使用 configSource 属性链接到 Web.config 文件的单独文件中,否则当配置发生更改时,应用程序将重新启动。 而有一个属性是例外的,那就是位于machine config file里面的processModel 子节,它需要重启程序才可以。 为什么呢?Why?なぜ ?

  12. <section name="processModel" type="System.Web.Configuration.ProcessModelSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineOnly" allowLocation="false" /> Q ProcessModel 元素 processModel 元素(ASP.NET 设置架构)元素配置用于服务器(包括服务器上的所有 ASP.NET 应用程序)的处理模型。 因此,processModel 设置只能放在 Machine.config 文件中,而且不能被任何 Web.config 文件中的设置重写。 Asp.net asp 为什么例外呢? aspnet_wp.exe进程 IIS

  13. Q 单个文件中配置的多个 ASP.NET 资源   当管理大量配置设置或者管理 ISP 设置中的客户端网站时,将多个位置的设置存储在一个 Web.config 文件中可能会非常有用。使用 location 元素的 path 属性,可以对存储在应用程序子目录中的多个特定的 ASP.NET 资源进行配置。 <system.web> <!-- 身份验证 --><authentication mode="Forms"><forms name=".myForm" loginUrl="login.aspx" timeout="20" protection ="All"/></authentication><authorization ><deny users ="?"/></authorization></system.web><!-- 验证码 --><location path ="CheckCode.aspx"><system.web ><authorization ><allow users ="*"/></authorization></system.web></location>

  14. Machine.Config Web.Config及配置文件层次结构和继承 http://tb.blog.csdn.net/TrackBack.aspx?PostId=1573775 更改并应用新的配置设置时的config http://ciweilove.blog.hexun.com/7164014_d.html

  15. Q 对web-config进行读写操作 <?xml version="1.0"?> <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> … … </configuration> <configSections> … … </configSections> <appSettings> … … </appSettings> <connectionStrings> … … </connectionStrings> <system.web> … … </system.web> 指定配置节和命名空间声明。 包含自定义应用程序设置,如文件路径、XML Web services URL 或存储在应用程序的 .ini 文件中的任何信息。 为 ASP.NET 应用程序和 ASP.NET 功能指定数据库连接字符串(名称/值对的形式)的集合。 指定 ASP.NET 配置节的根元素,并包含用于配置 ASP.NET Web 应用程序和控制应用程序行为的配置元素。

  16. Q <configSections> 指定配置节和命名空间声明。 <configSections> <section /> // 定义配置节处理程序与配置元素之间的关联。 <sectionGroup /> // 定义配置节处理程序与配置节之间的关联。 <remove /> // 移除对继承的节和节组的引用。 <clear/> // 移除对继承的节和节组的所有引用 </configSections> configSections 元素指定了配置节和处理程序声明。 ASP.NET 会将配置数据的处理委托给配置节处理程序。 每个 section 元素标识一个配置节或元素,以及对该配置节或元素进行处理的关联 ConfigurationSection 派生类。可以在 sectionGroup 元素中对 section 元素进行逻辑分组,以对 section 元素进行组织并避免命名冲突。 如果配置文件中包含 configSections 元素,则 configSections 元素必须是 configuration 元素的第一个子元素。

  17. <configSections> <sectionGroup name="system.web" type="System.Web.Configuration.SystemWebSectionGroup, System.Web, Version=%ASSEMBLY_VERSION%, Culture=neutral, PublicKeyToken=%MICROSOFT_PUBLICKEY%"> <sectionname="authentication" type="System.Web.Configuration.AuthenticationSection, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" allowDefinition="MachineToApplication" /> <!-- Other system.web sections --> </sectionGroup> <!-- Other configuration sections --> </configSections> PS:ajax扩展实例

  18. Q <appSettings> 包含自定义应用程序设置,如文件路径、XML Web services URL 或存储在应用程序的 .ini 文件中的任何信息。 <appSettings> <add key="Application1" value="MyApplication1" /> <add key="Setting1" value="MySetting" /> <add key="WebSiteName" value="Demetersoft.com" /> </appSettings> //获取key为patetitle的value值 ConfigurationManager int settingCount = appSettings.Settings.Count ; string appSettings.Settings[appKeys[0]].Value ; string pateTitle= appSettings.Settings["Setting1"].Value; • 设置全局参数 • 可以用作常量定义 • 配置重要的站点信息

  19. Q <connectionStrings> 为 ASP.NET 应用程序和 ASP.NET 功能指定数据库连接字符串(名称/值对的形式)的集合。 <connectionStrings> <!-- connection strings--> <add name=“ABC" connectionString= "Server=ABC-DEV; Database=HelloKitty; uid=sa;pwd=123456;"/> </connectionStrings> // 访问<connectionStrings>配置节内容 ConfigurationManager.ConnectionStrings[“ABC"].ConnectionString; 值得说明的是,在<appSettings >里,使用的是AppSettingsSection类,在<connectionStrings>里使用的的是ConnectionStringsSection类。 事实上,ASP.NET2.0提供的一组函数都是“配置节名+Section”的形式提供的类。 注意:此属性在 .NET Framework 2.0 版中是新增的。

  20. <appSettings> <addkey="connectionstring" value="data source=192.168.123.200;initial catalog=webmedlink;persist security info=False;user id=sa;password=KSDChagd2004;packet size=4096"> Asp.net1.0 Asp.net2.0 Configuration config =WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath); ConnectionStringsSection conSection =(ConnectionStringsSection)config.GetSection("connectionstring "); ConnectionStringSettingsCollection conCollection = conSection.ConnectionStrings;

  21. Q <system.web> 指定 ASP.NET 配置节的根元素,并包含用于配置 ASP.NET Web 应用程序和控制应用程序行为的配置元素。 <system.web> <anonymousIdentification> <authentication> <authorization> … … <httpCookies> <httpHandlers> <httpModules> <membership> <mobileControls> <pages> <profile> <roleManager> … … <trace> </system.web> 参考文档msdn: ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.NETDEVFX.v20.chs/dv_ASPNETgenref/html/a7589d5e-8dce-4951-a876-b1276c02b60b.htm 35项 下表显示的是常用的以及某些有用的子节的详细含义和用法

  22. Q 值得说明的 About “Section” 节元素是配置节的成员。一个命名空间一个节。 配置节声明必须出现在配置文件顶部的 configSections元素内。section元素中包含的每个声明都指定一个节的名称,以及用来处理该节中的配置数据的 .NET Framework 类(从 ConfigurationSection 派生)的名称。section标记可以组合到 sectionGroup标记中。 About “Provider” <webParts> <personalization defaultProvider="AspNetSqlPersonalizationProvider"> <providers> <add name="AspNetSqlPersonalizationProvider" type="System.Web.UI.WebControls.WebParts.SqlPersonalizationProvider" connectionStringName="LocalSqlServer" applicationName="/" /> </providers> … … </webParts>

  23. 获取或设置此规则所应用于的 ProviderSettings 对象的名称。 表示配置提供程序的一组配置元素。 获取在连接中作为提供者的 WebPart控件。 描述这个控件的名称,类型,以及相关配置的东西 About HttpModule <httpModules> <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.6, Culture=neutral, PublicKeyToken=d3645"/> </httpModules> 在一个应用程序内配置 HTTP 模块。可以在配置层次中的任何级别声明此元素。

  24. About HttpModule HttpHandler实现了类似于ISAPI Extention的功能,他处理请求(Request)的信息和发送响应(Response)。 HttpHandler功能的实现通过实现IHttpHandler接口来达到。而HttpModule实现了类似于ISAPI Filter的功能。 public void Init(HttpApplication application) { // // TODO: // } 可以参考: http://group.hexun.com/Mode/Discussion.aspx?articleid=736362

  25. About httpHandlers 向应用程序添加处理程序。处理程序是处理特定 URL 请求的 IHttpHandler类或 IHttpHandlerFactory类。 ASP.NET都使用HTTP请求实现了大量的自己的功能。ASP.NET使用处理程序来处理.aspx,.asmx,.soap和其他一些ASP.NET文件。实现HTTP处理程序包含以下步骤:1.编写一个实现IHttpHandler接口的类。2. 在web.config或machine.config文件中注册这个处理程序。3.在Internet服务管理器中把文件扩展如:(.kim)映射到ASP.NET ISAPI扩展DLL(aspnet_isapi.dll)上。 可以参考: http://blog.csdn.net/xiejianjun/archive/2007/06/02/1635863.aspx

  26. http://www.haokucn.com/article/Tushu_html/JISHULEI/iismmc/htm/aaconaddelementforhttphandlers.htmhttp://www.haokucn.com/article/Tushu_html/JISHULEI/iismmc/htm/aaconaddelementforhttphandlers.htm <httpHandlers> <remove verb="*" path="*.asmx"/> <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/> </httpHandlers> <httpModules> <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> </httpModules>

  27. About UrlMapping <urlMappings enabled="true"> <clear /> <add url="~/Home.aspx" mappedUrl="~/Default.aspx?tab=home" /> <remove url="~/Home2.aspx" /> </urlMappings> 请求 Home.aspx ~/Default.aspx?tab=home

  28. About 除去基本四个大节外其他扩展节 以<system.web.extensions>为例,它与<system.web >一样,不过它是扩展 Config支持扩展,可以从machine config里面继承 扩展的子节内容必须是在<configSections>中注册声明过的 <system.web.extensions> <scripting> <webServices> <jsonSerialization maxJsonLength="500"> <converters> <add name="ConvertMe" type="Acme.SubAcme.ConvertMeTypeConverter"/> </converters> </jsonSerialization> <profileService enabled="true" readAccessProperties="propertyname1,propertyname2" writeAccessProperties="propertyname1,propertyname2" /> </webServices> <scriptResourceHandler enableCompression="true" </scripting> </system.web.extensions>

  29. 谢谢~~ 参考资料: HttpModule http://group.hexun.com/Mode/Discussion.aspx?articleid=736362 httpHandlers使用和问题 http://blog.csdn.net/xiejianjun/archive/2007/06/02/1635863.aspx <httpHandlers> 的 <add> 元素 http://www.haokucn.com/article/Tushu_html/JISHULEI/iismmc/htm/aaconaddelementforhttphandlers.htm

More Related