配置文件之所以灵活,是因为它使用纯文本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
在思想层次看配置文件,之所以能够使程序变的灵活,能够博得人们的喜爱,是因为他能更好的应对变化。