`
webcode
  • 浏览: 5940859 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

配置文件,让程序更加灵活

 
阅读更多

配置文件之所以灵活,是因为它使用纯文本XML编写,如果需求发生改变,可以方便的修改应用程序的配置信息,且无需重新编译。

Config分为Machine.Config和***.Config,见名知意,Machine.Config是存储一台机器上的所有应用程序的配置信息,而***.Config是储存 *** 应用程序的配置信息。

今天我给大家介绍的是Web.Config

Web.config 文件是一个XML文本文件,它用来存储ASP.NET Web应用程序的配置信息,它可以出现在应用程序的每一个目录中。当你通过.NET新建一个Web应用程序后,默认情况下会在根目录自动创建一个默认的Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置。如果你想修改子目录的配置设置,你可以在该子目录下新建一个Web.config文件。它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。


这里有典型的代码和详细的说明:

<?xml version="1.0"?>
<!-- 
    注意: 除了手动编辑此文件以外,您还可以使用 
    Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
     “网站”->“Asp.Net 配置”选项。
    设置和注释的完整列表在 machine.config.comments 中,该文件通常位于 
    \Windows\Microsoft.Net\Framework\v2.x\Config 中
-->
<configuration>
  <!--应用程序设置-->
  <appSettings>
    <add key="con" value="server=.;database=northwind;Integrated Security=True"/>
    <add key="select" value="select * from employees"/>
  </appSettings>
  <!--页配置设置-->
  <system.web>
    <!--buffer为false 服务端以16k为单位逐渐向客户端传送,页面会一段一段的出来;
            为true,在服务端会形成整个页面再发送过来。-->
    <pages buffer="true" enableViewState="true " controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/>
    <!-- 
              在制作程序时,这个应该启用调试功能。
              如果网站制作完成了,发布出去了。这个应该设置为false ,不需要调试。
              如果打开调试后,影响速度
          -->
    <compilation debug="true" targetFramework="4.0"/>
    <!--
              身份验证和授权 Forms类型
              name:用于身份验证的Cookie名称
              loginUrl:登录页。如果没有身份验证Cookie,客户端将会重定向该页。
              protection:值为all,应用程序同时使用数据验证和加密来保护Cookie(存储加密,
                  传递过程中是否被篡改)
                                 值为none,加密和验证都禁用。
               timeout:这段时间后,身份验证的Cookie将过期,单位为分钟,默认为30
               path:由应用程序发布的Cookie路径,默认值是反斜杠 /
          -->
    <authentication mode="Forms">
      <!--身份验证-->
      <forms name="authCre" loginUrl="login.aspx" protection="All">
        <!--在文件中指定用户名和密码时,在前台使用 
          System.Web.Security.FormsAuthentication.Authenticate(txtUserName.Text, txtPwd.Text)
          判断是否与配置文件中的信息一致。
          -->
        <credentials passwordFormat="Clear">
          <!--credentials [kri'denʃəlz]证书-->
          <user name="aaa" password="aaa"/>
          <user name="bbb" password="bbb"/>
        </credentials>
      </forms>
    </authentication>
    <authorization>
      <!--授权-->
      <deny users="aaa,?"/>
      <!--?表示任何一个用户,即匿名-->
    </authorization>
    <!--
              如果在执行请求的过程中出现未处理的错误,可以显示的 html 错误页,
              以代替错误堆栈跟踪。
              mode:On 表示在本地和远程用户都会看到自定义错误信息。
                          Off 禁用自定义错误信息,本地和远程用户都会看到详细的错误信息。
                          RemoteOnly 表示本地用户将看到详细错误信息,而远程用户将会看到自定义错误信息。
      -->
    <customErrors mode="RemoteOnly" defaultRedirect="error.aspx">
      <error statusCode="403" redirect="NoAccess.htm"/>
      <error statusCode="404" redirect="FileNotFound.htm"/>
    </customErrors>
  </system.web>
</configuration>

这些是基本的、常用的配置信息,但是我还想补充几点:

1、<httpRuntime>

作用:配置ASP.NET HTTP 运行库设置。

示例:控制用户上传文件最大为4M,最长时间为60秒,最多请求数为100

<httpRuntime maxRequestLength="4096" executionTimeout="60" appRequestQueueLimit="100"/>


2、<sessionState>
作用:为当前应用程序配置会话状态设置(如设置是否启用会话状态,会话状态保存位置)。
示例
<sessionState mode="InProc" cookieless="true" timeout="20"/>
</sessionState>
注:
mode="InProc"表示:在本地储存会话状态(你也可以选择储存在远程服务器或SQL服务器中或不启用会话状态)
cookieless="true"表示:如果用户浏览器不支持Cookie时启用会话状态(默认为False)
timeout="20"表示:会话可以处于空闲状态的分钟数


3、<Location>
作用:设置不同子目录下应用程序的数据库链接
如果在一个虚拟目录下有多个子目录,每一个子目录下下的web应用程序都需要连接不同的数据库,这如何做呢??
一种方法是在每一个子目录下分别建立一个web.config,用它来设置这个目录下的数据库连接。但这种方法的问题是需要维护每一个了目录下的web.config。

方法二,是只在虚拟目录下建立一个web.config,在它里面设置每一个子目录下的应用程序的数据库连接。说到这里,你会想到上面的第二种方法,使用多个不同的key值来设置,这的确是一个办法。

当然是第二种方法好了,在虚拟目录下布置web.config,在其中使用location标记,使用同一个key值来连接数据库,这样做的好处很明显,因为用同一个key值,将导致在所有目录下的应用程序中,都可以使用共同的语句来连接数据库,这在程序以后发生位置迁移时,并不用修改程序中连接数据库的语句。
具体设置如下:

        <location path="news">
	 <appsettings>
	  <add key="connstring" value="uid=flyangel;password=3.1415926;database=news;server=(local)" />
	 </appsettings>
	</location>
	<location path="bbs">
	 <appsettings>
	  <add key="connstring" value="uid=flyangel;password=3.1415926;database=bbs;server=(local)" />
	 </appsettings>
	</location>
	<location path="soft">
	 <appsettings>
	  <add key="connstring" value="uid=flyangel;password=3.1415926;database=soft;server=(local)" />
	 </appsettings>
	</location>

注:上例中news、bbs、soft分别是虚拟目录下的子目录。
程序中使用连接时,采用下面的方法:
public function getconnectionstring()
configurationsettings.appsettings().item("connstring")
end sub


在思想层次看配置文件,之所以能够使程序变的灵活,能够博得人们的喜爱,是因为他能更好的应对变化。



















分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics