配置
一个 ASP.NET 应用程序的行为是由以下两个配置文件中的不同设置决定的:
- machine.config
- web.config
machine.config 文件包含所有支持设置项的默认和设置机器的具体值。机器的设置是由系统管理员,且应用程序通常不能访问这个文件。
然而,一个应用程序,可以通过在它的根文件夹中创建 web.config 文件覆盖默认值。web.config 文件是 machine.config 文件的一个子集。
如果应用程序包含子目录,那么它可以为每个文件夹定义一个 web.config 文件。每个配置文件的范围是用一个分层的自上而下的方式确定。
任何 web.config 文件都可以在本地扩展,限制,或重写任何设置在上层的定义。
Visual Studio 会为每个项目生成默认的 web.config 文件。应用程序可以在没有 web.config 文件的情况下执行,然而,我们不能调试一个没有 web.config 文件的应用程序。
下图显示的是用于 web 服务教程中的解决方案资源管理器为样本的例子:
Configuration Section Handler 声明
配置节处理程序声明是包含在 的标签中的,每个配置处理程序指定配置节的名称,并包含在提供了一些配置数据的文件中。它具有以下基本语法:
<configSections> <section /> <sectionGroup /> <remove /> <clear/> </configSections>它具有以下元素:
- Clear – 所有涉及继承的节和节组的引用。
- Remove – 删除一个继承引用的部分和部分组。
- Section – 定义了配置节处理程序和配置元素之间的关联。
- Section group – 它定义了一个配置节处理程序与配置节之间的关联。
应用程序设置
应用程序设置允许存储只读访问的应用程序的名称-数值对。例如,你可以定义一个自定义应用程序设置如下:
<configuration> <appSettings> <add key="Application Name" value="MyApplication" /> </appSettings> </configuration>例如,你还可存储一本书的 ISBN 号和名字数据对:
<configuration> <appSettings> <add key="appISBN" value="0-273-68726-3" /> <add key="appBook" value="Corporate Finance" /> </appSettings> </configuration>连接字符串
连接字符串展示的是可用于网站的数据库连接字符串。例如:
<connectionStrings> <add name="ASPDotNetStepByStepConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=E:\projectsdatacaching / datacachingApp_DataASPDotNetStepByStep.mdb" providerName="System.Data.OleDb" /> <add name="booksConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C: databindingApp_Dataooks.mdb" providerName="System.Data.OleDb" /> </connectionStrings>系统的网络元素
system.web 元素为 ASP.NET 配置节指定了根元素,并且包含了配置 ASP.NET Web 应用程序和控制应用程序运转的配置元素。
它控制大多数比较常见的需要调整的配置元素。该元素的基本语法如下:
<system.web> <anonymousIdentification> <authentication> <authorization> <browserCaps> <caching> <clientTarget> <compilation> <customErrors> <deployment> <deviceFilters> <globalization> <healthMonitoring> <hostingEnvironment> <httpCookies> <httpHandlers> <httpModules> <httpRuntime> <identity> <machineKey> <membership> <mobileControls> <pages> <processModel> <profile> <roleManager> <securityPolicy> <sessionPageState> <sessionState> <siteMap> <trace> <trust> <urlMappings> <webControls> <webParts> <webServices> <xhtmlConformance> </system.web>下表提供了一些常用的 system.web 元素的子元素的简要描述:
AnonymousIdentification
这是在需要用户身份确认时对未被认证的用户进行识别的。
Authentication
它是配置授权支持的,基本的语法是:
<authorization> <allow .../> <deny .../> </authorization>Caching
它配置缓存设置,基本的语法是:
<caching> <cache>...</cache> <outputCache>...</outputCache> <outputCacheSettings>...</outputCacheSettings> <sqlCacheDependency>...</sqlCacheDependency> </caching>CustomErrors
它定义了自定义错误消息,基本的语法是:
<customErrors defaultRedirect="url" mode="On|Off|RemoteOnly"> <error. . ./> </customErrors>Deployment
它定义了用于部署的配置设置。基本语法如下:
<deployment retail="true|false" />HostingEnvironment
它为托管环境定义了配置设置。基本语法如下:
<hostingEnvironment idleTimeout="HH:MM:SS" shadowCopyBinAssemblies="true|false" shutdownTimeout="number" urlMetadataSlidingExpiration="HH:MM:SS" />Identity
它用于配置对应用程序的认证机制,基本语法如下:
<identity impersonate="true|false" userName="domainusername" password="<secure password>"/>MachineKey
它用于配置用于加密和解密数据的表单验证 Cookie 的密钥。
它还允许配置验证密钥对视图状态数据和 Forms 身份验证票证执行消息认证检查。基本的语法是:
<machineKey validationKey="AutoGenerate,IsolateApps" [String] decryptionKey="AutoGenerate,IsolateApps" [String] validation="HMACSHA256" [SHA1 | MD5 | 3DES | AES | HMACSHA256 | HMACSHA384 | HMACSHA512 | alg:algorithm_name] decryption="Auto" [Auto | DES | 3DES | AES | alg:algorithm_name] />Membership
它用于配置管理和认证用户参数。基本的语法是:
<membership defaultProvider="provider name" userIsOnlineTimeWindow="number of minutes" hashAlgorithmType="SHA1"> <providers>...</providers> </membership>Pages
它提供了网页的具体配置。基本的语法是:
<pages asyncTimeout="number" autoEventWireup="[True|False]" buffer="[True|False]" clientIDMode="[AutoID|Predictable|Static]" compilationMode="[Always|Auto|Never]" controlRenderingCompatibilityVersion="[3.5|4.0]" enableEventValidation="[True|False]" enableSessionState="[True|False|ReadOnly]" enableViewState="[True|False]" enableViewStateMac="[True|False]" maintainScrollPositionOnPostBack="[True|False]" masterPageFile="file path" maxPageStateFieldLength="number" pageBaseType="typename, assembly" pageParserFilterType="string" smartNavigation="[True|False]" styleSheetTheme="string" theme="string" userControlBaseType="typename" validateRequest="[True|False]" viewStateEncryptionMode="[Always|Auto|Never]" > <controls>...</controls> <namespaces>...</namespaces> <tagMapping>...</tagMapping> <ignoreDeviceFilters>...</ignoreDeviceFilters> </pages>Profile
它用于配置用户配置文件参数。基本的语法是:
<profile enabled="true|false" inherits="fully qualified type reference" automaticSaveEnabled="true|false" defaultProvider="provider name"> <properties>...</properties> <providers>...</providers> </profile>RoleManager
为用户角色配置设置信息。基本的语法是:
<roleManager cacheRolesInCookie="true|false" cookieName="name" cookiePath="/" cookieProtection="All|Encryption|Validation|None" cookieRequireSSL="true|false " cookieSlidingExpiration="true|false " cookieTimeout="number of minutes" createPersistentCookie="true|false" defaultProvider="provider name" domain="cookie domain"> enabled="true|false" maxCachedResults="maximum number of role names cached" <providers>...</providers> </roleManager>SecurityPolicy
用于配置安全策略。基本的语法是:
<securityPolicy> <trustLevel /> </securityPolicy>UrlMappings
它定义了用于隐藏原始URL的映射,并提供更具用户友好性的的 URL 。基本的语法是:
<urlMappings enabled="true|false"> <add.../> <clear /> <remove.../> </urlMappings>WebControls
它提供了对客户端脚本共享位置的名称。基本的语法是:
<webControls clientScriptsLocation="String" />WebServices
用于配置 Web 服务。