Web.config保存整个站点设置

来源:互联网 发布:leaflet.js api 编辑:程序博客网 时间:2024/05/17 17:44

Web.config存储应用到整个站点的值。组织为XML文件并位于根目录下,结点主要保存三个方面的信息:

  ●    在开发和部署环境下应用程序功能可用性的设置。

  ●    保存当从数据源读取和向数据源写入时使用值的连接字符串。

  ●    保存所有其他信息的System.Web和System.Net设置。

System.Web设置再分为几个子类,包括以下内容:

  ●    使页面指向其他执行代码的页面HTTP模块;

  ●    应该在编译时开启的调试例程;

  ●    验证技术;

  ●    Role Manager设置(开启或关闭);

  ●    匿名识别设置(允许或拒绝);

  ●    错误处理设置;

  ●    用于导航和菜单的Web.SiteMap文件数据;

  ●    用于识别用户的配置数据;

  ●    简单邮件传输协议的电子邮件配置(SMTP);

  ●    识别大对象中对象位置的命名空间的定义。

System.net仅保存用于目的的一个设置:用于发送电子邮件的一系列值。

可以用两种方法修正此文件的内容;第一种是在VWD中通过手动编辑它,万幸,这种方法并不太难。另一种方法是使用ASP.NETWeb站点管理工具,可以在VWD中启动它。进入主VWD菜单并选择Website_ASP.NET Configuration。一系列对话框允许设置VWD将要在Web.config中更改的值而不用直接打开该文件。可以在本章的最后一个实验中看一下此工具。

下面通过查看Wrox United的Web.config文件的一部分对Web.config文件的结构进行说明,从文件的上部往下查看每一节。如果打开该文件,可以看到它的结构(具有开始和结束标记,每一个都具有属性,有时还具有子结点)与任何其他XML文件相同。通过添加适当的结点和属性进行应用程序级的配置设置。特殊字符<!-- -- >内的文本被当作注释,可以把它添加到文件中以帮助其他用户了解文件的每一部分是用来干什么的。

当VWD创建一个Web.config文件时它包含很多注释,这些注释对每节的设置提供建议。所有值的列表包含在位于 C:/Windows/Microsoft.NET/Framework/v2.xxx/CONFIG/
Web.config.Comments.的文本文件中。

以下是Wrox United中Web.config文件的开始部分,可以在下载文件中查看。可以随时把它们导入到您的站点中而不用键入一个新的Web.Config文件。

<?xml version="1.0"?>

<!-- Note: As an alternative to hand editing this file you can use the web admin

      tool to configure settings for your application. Use the Website->Asp.Net

      Configuration option in Visual Studio.

      A full list of settings and comments can be found in machine.config.comments

      usually located in /Windows/Microsoft.Net/Frameworks/v2.x/Config -->

<configuration>

这里的三行代码会默认添加到所有新的Web.config文件中。第一行包含XML声明,指明Web.config文件遵循XML标准。下一节是一个大型注释,提示可以使用管理工具而不用手动编辑代码。需要注意的最后一项是文件的根结点;<configuration>结点包含带有与存储在站点上的内容有关的设置的子结点。

下一节包含自定义应用程序设置,该设置对改变样例应用程序在不同环境中运行的方式有用。The large section between <!--和-->之间的大的一节是向VWD中的程序员提供的注释,不是实际设置的一部分:

<!--

  Mode defines certain feature availability:

    Full: No restrictions

    Real: Runs as if a real site, without the view code and download links

-->

<appSettings>

  <add key="mode" value="Full" />

</appSettings>

下一节(连接字符串一节)包含几组关于数据源的信息。此字符串通常包含可以用来把您的代码连接到存储在数据库中的数据的验证信息。连接字符串在第7章详细论述。现在只注意一下在连接字符串一节内有一个或多个用来添加字符串的标记:

<!--

        define the connection string to the database

-->

<connectionStrings>

   <add name="WroxUnited"

        connectionString=" Data Source=./SQLEXPRESS;

                                 AttachDbFilename=|DataDirectory|WroxUnited.mdf;

                                 Integrated Security=True;

                                 User Instance=True"

        providerName="System.Data.SqlClient"/>

</connectionStrings>

注意connectionString属性在这里换行是因为页面宽度的限制。在您的代码中该行代码应该保持在一行内。

在连接字符串之后,其余的设置都位于<system.web>标记内。它们可以以任何顺序出现,here the httpModules setting is covered first. 此值主要允许站点处理用户选择的主题,在页面中不要求有代码。在第5章论述主题,虽然文中没有详细论述httpModule,但对代码进行了详细说明。

<system.web>

  <httpModules>

    <add name="Page" type="Wrox.Web.GlobalEvents.ThemeModule" />

  </httpModules>

System.Web中的下一项是编译值。当设置为true(像以下代码演示的那样)时,ASP.NET 2.0将提供一个到页面的输出,描述构建页面期间所发现的任何问题。在开发站点时此功能非常有用,但是在部署前必须把值设置为false:

<system.web>

  <compilation debug="true">

  </compilation>

Wrox United声明了用于三种安全设置的站点级的值:验证、角色和配置。第4章和第11章详细论述这些功能。以下代码的Web.config一节给出一个将学到编写哪些内容的预览。注意这些设置如何建立用于登录的页面(Default.aspx)和启动Role Manager。然后是创建Member类型的角色的一组标记。这些也是在第4章和第11章中详细说明。以下的代码列表为节省空间没有列出程序员帮助注释。另外,在WroxUnited web.config中的第二节和第三节设置之间省略了一些内容,这里是一些其他的设置。

<authentication mode="Forms">

  <forms loginUrl="Default.aspx"></forms>

</authentication>

<roleManager enabled="true"/>

<anonymousIdentification enabled="true"/>

...

<profile enabled="true">

  <properties>

    <add name="MemberName"/>

    <add name="Name"/>

    ...

    <add name="Cart" serializeAs="Binary" type="Wrox.Commerce.ShoppingCart"

          allowAnonymous="true"/>

  </properties>

</profile>

下一节是关于能影响站点日常运行的错误处理部分。第15章详细论述错误处理,但是作为说明,可以把ASP.NET设置为在出现问题时将用户重定向到错误页。在错误情况下显示的文件在Web.config defaultRedirect设置中的声明如下:

<!-- The <customErrors> section enables configuration of what to do if/when an

unhandled error occurs during the execution of a request. Specifically, it enables

developers to configure html error pages to be displayed in place of a error stack

trace. -->

           <customErrors mode="RemoteOnly">

       <error statusCode="404" redirect="missingPage.aspx"/>

           </customErrors>

例如,如果你的数据库服务器是断电的受害者,用户不需要知道详细情况,但是需要打消他们的疑虑,可以给出一行提示“对不起,现在出现故障——我们正努力修复故障。将会很快恢复正常的服务。”而本地管理员需要知道问题所在,以便他们能尽快从错误中恢复并正常运行。此示例中的RemoteOnly属性意味着远端用户只能看到友好的提示信息,而管理员会看到任何错误的所有详细情况。

System.Web用来标识保存站点地图的文件,站点地图是所有页面的索引以及这些页面之间关系(在第2章论述)的描述。ASP.NET 2.0 也需要站点使用如何提供程序或读取工具的标识。

<!-- Redefine the Site Map Provider, to add the security trimming attribute, which

is off by default -->

     <siteMap defaultProvider="AspXmlSiteMapProvider" enabled="true">

       <providers>

         <clear/>

         <add name="AspXmlSiteMapProvider"

                    type="System.Web.XmlSiteMapProvider,

                    System.Web,

                    Version=2.0.3600.0,

                    Culture=neutral,

                    PublicKeyToken=b03f5f7f11d50a3a"

                    siteMapFile="web.sitemap"

                    securityTrimmingEnabled="true"/>

       </providers>

     </siteMap>

最后的一组设置在system.net内。尽管在很多应用程序中没有使用该设置,但是可以使用它以便当用户忘记口令时能够向用户发送自动电子邮件,并请求在电子邮件中向用户发送口令。不管电子邮件是如何创建的,必须在Web.config中声明SMTP(简单邮件传输协议),如下所示:

  <system.net>

    <mailSettings>

      <!-- these settings define the mail server settings from: the user name from

which the email is sent - this is the application that is sending the message host:

the name of your mail server userName: the name the application will use to log

into the mail server password: the password for the above user name

      -->

      <smtp from="admin@your-domain.com">

      <network host="your-mail-server-name"

                 userName="your-user-name"

                 password="your-password" />

    </smtp>

  </mailSettings>

</system.net>

最后,像所有XML文件一样,每个开始标记都必须有一个结束标记,因此必须以如下的形式结束文件:

  </system.web>

</configuration>

正如所见,Web.config中保存所有其他页面可以引用的站点级设置。因此不必在每个需要信息的页面上重复指定相同的几项信息,并且有一个可以更改这些设置的地方。

将向所有的站点页面上添加更多的功能,包括添加处理在每个页面上发生的各种事件的代码。但是,同样也不想在每个页面上指定相同的设置,如果需要让相同的行为重复在多个页面上,需要一种方法共享该代码。在Web.config中没有可执行代码——因此需要另一个站点级文件——Global.asax文件。

 

参考文献:

《ASP.NET 2.0经典教程——C#篇》作者: (美)哈特 著,孟宪瑞,易磊 译 出版社: 人民邮电出版社

原创粉丝点击