aspnet执行sql语句
A. 求.net面试题
下面有关用户控件与aspx页面区别说法错误的是(B)
aa// 用户控件不能再包含<HTML><BODY><FORM>标记,而aspx页面可以包含
bb// 用户控件不能触发服务器端的事件,只是一种外观重用方式,而aspx页面可以
cc// 用户控件继承自System.Web.UI.UserControl,而aspx页面继承自System.Web.UI.Page
dd// 用户控件可以包含其它用户控件,但是不能直接访问,必须包含在某个aspx页面中才可以访问,而aspx页面是可以直接访问的
想在在aspx页面使用用户控件,则aspx页面开始部分必须添加下面哪个页面指令A
aa// <%@ Page %>
bb// <%@ Master %>
cc// <%@ Control %>
dd// <%@ Register %>
根据你的理解,你认为第三控件与用户控件的主要区别是A
aa// 第三方控件是编译后的代码,后缀为dll,只要应用程序引用进来,就可以使用,而用户控件是页面文件,属于非编译代码,只限于在当前应用程序中使用
bb// 用户控件比第三方控件更灵活,可以在应用程序中多个地方使用
cc// 用户控件出现在工具箱中,而第三方控件不会出现在工具箱中
dd// 用户控件比第三方控件的执行效率要高一些
下面关于HttpHandler与HttpMole说法正确的是C
aa// 一个Http请求中可以经历多个HttpMole和一个HttpHandler
bb// 一个Http请求中可以经历多个HttpHandler和一个HttpMole
cc// HttpMole是一个Http请求的最终处理者
dd// HttpHandler通常做一些停止数据向客户端输出的操作
在aSPNET中,关于HttpHandler说法不正确的是:(D)
aa// 通常文件后缀名为ashx
bb// 它是一个Http请求处理的最终点
cc// 它实现了IHttpHandler
dd// 当它的IsReusable属性为false时,表示只能使用一次
下面哪个选项不能在web.config文件中配置的(C)
aa// 连接字符串
bb// 身份验证
cc// 网站导航
dd// 程序出现错误时,定向到的错误提示页面
aSPNET支持三种验证方式,不属于其中的是(B)
aa// passport
bb// sqlServer身份
cc// Windows
dd// Forms
在网站某个目录的web.config配置文件中,有一段关于该目录授权的代码,经过分析,你认为正确的答案是:B
<authentication>
<deny user="?" /> 拒绝所有匿名用户
<allow users="xiaozhang" /> 容许xiazhang
<deny roles="*"> 拒绝所有用户
</authentication>
aa// 所有用户都可以访问该网站目录,除xiaozhang以外
bb// 所有用户都不能访问该网站目录,除xiaozhang以外
cc// 匿名用户和xiaozhang都不能访问该网站目录
dd// 所有角色和用户都不能访问该网站目录
已知在网站的根目录下有一个web.config文件,有如下关于验证的代码,正确说法的是B
<authorization mode="Forms">
<forms name="userLogin" loginUrl="~/login.aspx" timeout="20">
</forms>
</authorization>
aa// loginUrl的作用是,当用户登录不成功时,转向login.aspx页面
bb// loginUrl的作用是,当用户进入网站如果未登录,就转向login.aspx页面
cc// timeout是超过20分钟不登录,就退出网站
dd// timeout的作用是当20分钟后,用户还没有登录,就转向login.aspx页面
下列关于部署的说法,正确的是(a d)
aa// 部署就是将站点文件复制到相关web目录中
bb// 应该在本地站点将内容处理好,比如数据库连接字符串设置好并加密,然后直接复制到站点到远程服务器相关目录即可
cc// 发布预编译站点,如果将来需要更新某个页面,最好不要选择使用”使用固定命名和单页程序集”
dd// 发布预编译站点就是将站点所有文件都编译到dll中
下面(C)不属于导航控件
aa// Menu
bb// SiteMapPath
cc// View
dd// SiteMapDataSource
在asp.net中的母版中的内容页中能包含的HTML元素是(D)
aa// <html>
bb// <head>
cc// <body>
dd// <script>
如果希望使用TreeView控件显示时默认全部展开应设置(D)属性
aa// ExpandDepth
bb// ExpandImageToolTip
cc// ExpandImageUrl
dd// Expand
在SiteMapPath控件中,要设置导航路径中分隔符应设置(B)属性
aa// PathDirection
bb// PathSeparator
cc// PathSeparatorStyle
dd// Provider
下列关于ContentPlaceHolder控件说法错误的是(C)ContentPlaceHolderMain
aa// ContentPlaceHolder 控件为母版页中的内容定义一个相对区域
bb// 母版页还包括一个或多个 ContentPlaceHolder 控件
cc// ContentPlaceHolder 控件必须包含在内容页中
dd// Content 控件使用其 ContentPlaceHolderID 属性与 ContentPlaceHolder 关联.
下列(c)模板不属于Repeater控件
aa// ItemTemplate
bb// alternatingItemTemplate
cc// SelectedItemTamplate
dd// SeparatorTemplate
设置(a)属性将会页面显示DataList控件时调用EditItemTemplate模板
aa// EditItemIndex
bb// EditIndex
cc// SelectedItemIndex
dd// ModifyItemIndex
如果在DataList中实现分页一般(AB)(选择二项)
aa// 使用Sql语句
bb// 使用PagedDataSource对象进行分页
cc// 设置CurrentPageIndex属性
dd// 设置DataList的PageIndex属性
DataList中的交替行模板是(B)
aa// ItemTemplate
bb// alternatingItemTemplate
cc// SelectedItemTamplate
dd// SeparatorTemplate
下面关于DataList说法错误的是(C)
aa// DataList没有内置分页功能
bb// DataList具有SelectedItemTamplate模板
cc// DataList不能使用ObjectDataSource控件进行绑定数据 可以使用ObjectDataSource控件进行绑定数据
dd// DataList比Repeater控件多了二个模板 DataList有编辑模板和选择模板
在一个aSPX页面的Page_Load事件中,编写了如下代码,则执行该页面后,将在页面中输出(a)。(选择一项)
private void Page_Load(object sender , System.Eventargs e){
Response . Write(“欢迎光临”);
Response . End();
Response . Write(“欢迎下次光临”);
}
aa// 欢迎光临
bb// 欢迎下次光临
cc// 欢迎光临
欢迎下次光临
dd// 欢迎光临欢迎下次光临
在aSP.NET中,application是(C)类的实例
aa// Httpapplication
bb// HttpapplicationUtility
cc// HttpapplicationState
dd// Page
在aSP.NET中,下列关于session对象的说法正确的是(D)。(选择一项)
aa// 用户每次打开一个web页面,将会创建一个session对象
bb// 用户关闭客户端web页面后,session对象将立即消失
cc// 应用程序退出后,session对象的值才能消失
dd// 每个用户的Session对象不能被其他用户访问
在aSP.NET中,为了将当前页面跳转到一个相同目录下名为Main.htm的页面,下面方法正确的是(C)。(选择一项)
aa// Server.Execute(“Main.htm”);
bb// Servlet.Transfer(“Main.htm”);
cc// Response.Redirect(“Main.htm”);
dd// Response.Write(“Main.htm”);
某个用aSP。NET技术开发的网站拥有大量的访问量,最近该网经常因为服务器内存占用率过高而宕机,作为该网站技术员的你仔细检查了该网站的系统,发现内存占有率过高是因为每个用户都有大量数据保存在Session中,为了解决该问题你应该进行(C)处理。(选择一项)
aa// 将保存在Session中的数据保存在application中
bb// 将保存在Session中的数据保存在Cookie中
cc// 将Session中对安全性要求不高的数据保存在Cookie中,不经常使用的数据保存在数据库中
dd// 将Session中对安全性要求不高的数据保存在application中,不经常使用的数据保存在Cookie中
对于第三方在线文本编辑控件FreeTextBox,如果需要获取控件中录入文本的HTML代码,需要访问什么属性(A)(选择一项)
aa// Text
bb// HtmlText
cc// Value
dd// SelectText
有时候编辑过程中会出现如下的错误,如果要避免该错误,需要在Page页面指令上做何设置(D):(选择一项)
aa// EnableEventValidation="true"
bb// EnableEventValidation="false"
cc// ValidateRequest="true"
dd// ValidateRequest="false"
使用验证码生成控件Webvalidates,生成验证码的方法为(C):(选择一项)
aa// Generate()
bb// Initial()
cc// Create()
dd// Next()
CodeSmith中,脚本标签写法正确的是(B):(选择一项)
aa// <script runat=”server”></script>
bb// <script runat=”template”></script> 如果不添加会被视为普通文本
cc// <CodeTemplate runat=”server”></CodeTemplate>
dd// <CodeTemplate runat=”template”></CodeTemplate>
利用CodeSmith生成实体类的代码,对于DbType.Int32,应输出的类型为:(C)(选择一项)
aa// byte
bb// short
cc// int
dd// long
下面那种数据源控件适合于三层结构数据绑定(C)
aa// SqlDataSource
bb// accessDataSoure
cc// ObjectDataSoure
dd// XmlDataSoure
下面对于几种数据源控件说法错误的是(A)
aa// SqlDataSource数据源控件不能用于oracle数据库和access数据库。
bb// ObjectDataSource可以对业务对象或其他返回数据的类执行特定的数据访问。
cc// XmlDataSource可以对XML文档执行特定访问,包括物理访问和内存访问。
dd// SiteMapDataSource可以对站点地图提供程序所存储的Web站点执行特定的站点地图数据访问.
为绑定的行添加脚本事件的方法是什么(D)
aa// ItemDataBound
bb// DataBinding
cc// DataBound
dd// RowDataBound
DropDownList控件的哪个属性可获取当前选择的项(A)
aa// DropDownList.SelectedItem.Value
bb// DropDownList.SelectedItem.Text
cc// DropDownList.SelectedValue
dd// DropDownList.SelectedItem
Gridview控件的基类是(C)
aa// HierarchicalDataBoundControl
bb// ListControl
cc// CompositeDataBoundControl
dd// BaseGridriew
下面关于Eval和Bind的区别,说法不正确的是(B)
aa// Eval()方法是静态(只读)方法
bb// Eval方法没有Bind?方法访问速度快
cc// Bind?方法支持读/写功能,可修改回传服务器。
dd// Bind 方法不能格式化字符串
下面关于FileUpload控件说法不正确的是()
aa// 获取上传文件名的属性是FileUpload.PostedFile.FileName
bb// 获取上传文件大小的属性是FileUpload.PostedFile.ContentLength
cc// 获取上传文件类型的属性是FileUpload.PostedFile.ContentType
dd// 保存上传文件的方法是FileUpload.SevaAs
如果用户信息必须填写电话号码,使用那个验证控件(C)
aa// RequiredFieldValidator
bb// REgularExpression
cc// RequiredFieldValidator和regularExpression;
dd// CompareValidator和RequiredFieldValidator;
现在需要验证Textbox的输入数据为年龄,并且要求大于18,小于65应该使用的控件是(C)
aa// RequiredFieldValidator
bb// REgularExpression
cc// RequiredFieldValidator和RangeValidator
dd// CompareValidator和RequiredFieldValidator
ValidationSummary控件的作用是(B)
aa// 检查总和数
bb// 集中显示所有验证的结果
cc// 判断有无超出范围
dd// 检查数值大小
在VS中,下列说法错误的是: D
aa// 内置了轻量级的Web服务器
bb// 无须配置IIS、设置相应权限
cc// 内置了80多个控件
dd// 代码前置,逻辑分明
运行下列代码,如果当天是星期天,且用户输入“accp”(输入框TextBox的ID是txtName),则将输出(C)
string outPut="";
switch (DateTime.Now.DayOfWeek.ToString())
{
case "Saturday": outPut = "{0},Hi"; break;
case "Sunday": outPut = "{0},Ok"; break;
default: outPut = "{0},Bye"; break;
}
string message = string.Format(outPut,txtName.Text);
Response.Write(message);
aa// Hi
bb// Ok
cc// Bye
dd// 无输出
App_Data目录是用来放置(A)
aa// 专用数据文件
bb// 共享文件
cc// 被保护的文件
dd// 代码文件
VS创建Asp.net网站时自动生成的文件和目录有(BCD) 选择三项
aa// app_resource文件夹
bb// app_Data目录
cc// 扩展名为aspx和cs的文件
dd// Web.Config文件
现有用来做开发的生产机和用来做布署的服务器,关于开发布署发布网站说法正确的是:BC 选择二项
aa// 生产机必须安装IIS
bb// 服务器必须安装IIS
cc// 生产机必须安装Windows Server操作系统
dd// 服务器必须安装Windows Server操作系统
B/S典型应用有:BCD 选择三项
aa// 某酒店的内务管理
bb// 购物网站
cc// 个人博客
dd// 论坛
在开发三层结构的网站时,与数据表对应的实体类应写在(D)层
aa// 表示层
bb// 业务逻辑层
cc// 数据访问层
dd// 模型层
某个论坛上有这样的规定:在线时长不够100小时不能发贴,相关的代码应该写在(B)层
aa// 表示层
bb// 业务逻辑层
cc// 数据访问层
dd// 模型层
对于存储过程的调用,应该出现在(C)层
aa// 表示层
bb// 业务逻辑层
cc// 数据访问层
dd// 模型层
下列说法正确的是(AB) 选择二项
aa// 数据访问层要添加模型层的引用
bb// 业务逻辑层要添加数据访问层的引用
cc// 表示层要添加数据访问层业务逻辑层和模型层的引用
dd// 模型层要添加数据访问层的引用
B. ASPNET怎样调用一个存储过程(带参数的)
ASPNET怎样调用一个存储过程(带参数的)使用的是Ado.NET中的相关的数据库操作方法。
Ado.NET连接数据库有以下几个步骤:
1:使用配置的数据库连接串,创建数据库连接 Connection 对象
2:构建操作的sql语句
3:定义command对象
4:打开数据连接
5:执行命令
举一个例子,删除操作
public int DeleteStudent3(int stuID)
{
int result = 0;
using (SqlConnection connection = new SqlConnection(connString))
{
SqlCommand objCommand = new SqlCommand(dboOwner + ".usp_DeleteStudent", connection);
objCommand.CommandType = CommandType.StoredProcere;
objCommand.Parameters.Add("@stuID", SqlDbType.Int).Value = stuID;
connection.Open();
result = objCommand.ExecuteNonQuery();
}
return result;
}
C. sp_executesql怎么实现的,关键是后面的参数可以不确定个数,类型!
/****** 对象: 存储过程 dbo.AspNetPage ******/
/*
=====================================
* @Describe 通用查询数据ASPNETPAGE分页过程
/*
@Tables 表名 必选
@PrimaryKey 主关键字 必选
@pagesize 页码大小 可选 默认值:1
@pageindex 当前页 可选 默认值:1
@docount 是否只统计总记录数 可选 默认值:否
@Fields 选择字段 可选 默认:所有字段
@Sort 排序语句,不带Order By 可选
@Filter 过滤语句,不带Where 可选
*/
=====================================
*/
CREATE procere AspNetPage
(
/*
@Tables 表名 必选
@PrimaryKey 主关键字 必选
@pagesize 页码大小 可选 默认值:1
@pageindex 当前页 可选 默认值:1
@docount 是否只统计总记录数 可选 默认值:否
@Fields 选择字段 可选 默认:所有字段
@Sort 排序语句,不带Order By 可选
@Filter 过滤语句,不带Where 可选
*/
@Tables nvarchar(400),
@PrimaryKey nvarchar(100),
@pagesize int=1,
@pageindex int=1,
@docount bit=0,
@Fields varchar(1000) = '*',
@Sort varchar(1000) = NULL,
@Filter varchar(1000) = NULL)
as
set nocount on
DECLARE @strFilter varchar(1000)
DECLARE @strSort varchar(1000)
IF @Filter IS NOT NULL AND @Filter != ''
BEGIN
SET @strFilter = ' WHERE ' + @Filter + ' '
END
ELSE
BEGIN
SET @strFilter = ''
END
IF @Sort IS Not NULL And @Sort!=''
Begin
Set @strSort='order by '+@Sort+''
End
if(@docount=1)
exec('select count('+@PrimaryKey+') from '+@Tables+' '+@strFilter+'')
else
begin
declare @PageLowerBound int
declare @PageUpperBound int
set @PageLowerBound=(@pageindex-1)*@pagesize
set @PageUpperBound=@PageLowerBound+@pagesize
create table #pageindex(id int identity(1,1) not null,nid int)
set rowcount @PageUpperBound
exec(
'
insert into #pageindex(nid)
select '+@PrimaryKey+' from '+@Tables+' '+@strFilter+' '+@strSort+'
select O.'+@Fields+'
from '+@Tables+' O,#pageindex p
where O.'+@PrimaryKey+'=p.nid and p.id>'+@PageLowerBound+' and p.id<='+@PageUpperBound+' order by p.id
'
)
select * from #pageindex
end
set nocount off
GO
D. 如何用SQL语句复制表的结构,复制整个数据库
1.复制表结构:只能复制表的字段,不能复制主键、索引等
select top 0 * into 新表名 from 原表名
2.复制整个数据库结构及数据:
create datebase Test --创建目标数据库
exec P_CopyDB @Source_DB='aspnet',@Des_DB='test' --把源数据库整个复制到目标数据库
P_CopyDB存储过程创建过程如下
-----------------------创建存储过程开始--------------------
create proc P_CopyDB
@Des_DB sysname, --目标数据库
@Obj_Type nvarchar(4000)=N'',--复制的对象类型,可以是下列字符串行表:
-- O 所有对象,D 默认值,R 规则,P 存储过程
-- T 表,TR 触发器,DT 用户定义数据类型
-- V 视图,DATA 数据,DEL 删除目标对象
@Source_DB sysname=N'', --源数据库
@ServerName sysname=N'', --服务器名
@UserName sysname=N'', --用户名,不指定则表示使用 Windows 身份登录
@pwd sysname=N'' --密码
AS
SET NOCOUNT ON
DECLARE @srvid int,@Dbid int,@S_dbid int,@D_dbid int,@TransferID int,
@err int,@src varchar(255), @desc varchar(255)
IF ISNULL(@ServerName,N'')=N'' SET @ServerName='.'--默认为本地数据库
IF ISNULL(@Source_DB,N'')=N'' SET @Source_DB=DB_NAME()
--创建sqldmo对象·
EXEC @err=sp_oacreate 'sqldmo.sqlserver',@srvid OUT
IF @err<>0 GOTO lb_Err
--连接服务器
IF ISNULL(@UserName,N'')=N'' --使用 Windows 身份登录
BEGIN
EXEC @err=sp_oasetproperty @srvid,'loginsecure',-1
IF @err<>0 GOTO lb_Err
EXEC @err=sp_oamethod @srvid,'connect',NULL,@servername
END
ELSE
EXEC @err=sp_oamethod @srvid,'connect',NULL,@servername,@UserName,@pwd
IF @err<>0 GOTO lb_Err
--获取数据库集
EXEC @err=sp_oagetproperty @srvid,'databases',@Dbid OUT
IF @err<>0 GOTO lb_Err
--选择源数据库
EXEC @err=sp_oamethod @Dbid,'item',@S_dbid OUT,@Source_DB
IF @err<>0 GOTO lb_Err
--选择目标数据库
EXEC @err=sp_oamethod @Dbid,'item',@D_dbid OUT,@Des_DB
IF @err<>0 GOTO lb_Err
--设置复制的对象
EXEC @err=sp_oacreate 'SQLDMO.Transfer',@TransferID OUT
IF @err<>0 GOTO lb_Err
--设置目标服务器信息
EXEC @err=sp_oasetproperty @TransferID,'DestServer',@ServerName
IF @err<>0 GOTO lb_Err
--设置连接用户
IF ISNULL(@UserName,N'')=N'' --使用 Windows 身份登录
BEGIN
EXEC @err=sp_oasetproperty @TransferID,'DestUseTrustedConnection',1
IF @err<>0 GOTO lb_Err
END
ELSE
BEGIN
EXEC @err=sp_oasetproperty @TransferID,'DestLogin',@UserName
IF @err<>0 GOTO lb_Err
EXEC @err=sp_oasetproperty @TransferID,'DestPassword',@pwd
IF @err<>0 GOTO lb_Err
END
--设置复制对象信息
EXEC @err=sp_oasetproperty @TransferID,'DestDatabase',@Des_DB
IF @err<>0 GOTO lb_Err
DECLARE tb CURSOR FAST_FORWARD LOCAL
FOR
SELECT Name FROM(
SELECT KeyWord=N',D,', Name=N'CopyAllDefaults' UNION ALL
SELECT KeyWord=N',O,', Name=N'CopyAllObjects' UNION ALL
SELECT KeyWord=N',R,', Name=N'CopyAllRules' UNION ALL
SELECT KeyWord=N',P,', Name=N'CopyAllStoredProceres' UNION ALL
SELECT KeyWord=N',T,', Name=N'CopyAllTables' UNION ALL
SELECT KeyWord=N',TR,', Name=N'CopyAllTriggers' UNION ALL
SELECT KeyWord=N',DT,', Name=N'CopyAllUserDefinedDatatypes' UNION ALL
SELECT KeyWord=N',V,', Name=N'CopyAllViews' UNION ALL
SELECT KeyWord=N',DATA,',Name=N'CopyData' UNION ALL
SELECT KeyWord=N',DEL,', Name=N'DropDestObjectsFirst'
)A WHERE CHARINDEX(KeyWord,
CASE WHEN ISNULL(@Obj_Type,N'')='' THEN ',O,DATA,' ELSE @Obj_Type END)>0
OPEN tb
FETCH tb INTO @src
WHILE @@FETCH_STATUS=0
BEGIN
EXEC @err=sp_oasetproperty @TransferID,@src,1
IF @err<>0 GOTO lb_Err
FETCH tb INTO @src
END
CLOSE tb
DEALLOCATE tb
--复制对象
EXEC @err=sp_oamethod @S_dbid,'Transfer',null,@TransferID
IF @err<>0 GOTO lb_Err
--结束
SET @err=0
GOTO lb_Exit
--错误处理
lb_Err:
EXEC sp_oageterrorinfo NULL, @src OUT, @desc OUT
RAISERROR(N'错误编号 %#x, 错误源 "%s", 错误描述 "%s"',16,1,@err,@src,@desc)
RETURN -1
lb_Exit:
EXEC sp_OADestroy @Dbid
EXEC sp_OADestroy @srvid
EXEC sp_OADestroy @TransferID
RETURN @err
GO
-----------------------创建存储过程结束--------------------
E. 请问一个asp,net的问题
我想通过例子你很快就会明白了:
<?xml version="1.0"?>
<!--
注意: 除了手动编辑此文件以外,您还可以使用
Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
“网站”->“Asp.Net 配置”选项。
设置和注释的完整列表在
machine.config.comments 中,该文件通常位于
\Windows\Microsoft.Net\Framework\v2.x\Config 中
-->
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<connectionStrings>
<add name="NorthwindConnectionString" connectionString="Data Source=8G4K5AU68FMJYV2\SQLEXPRESS;Initial Catalog=Northwind;Persist Security Info=True;User ID=sa;Password=123456"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<anonymousIdentification enabled="true"/>
</system.web>
</configuration>
这个配置文件的内容很少,但是包括非常重要的一节:configuration ->connectionStrings>.请注意,Web.Config文件是以XML 格式存储的,因此里边的信息采用"树型结构",就那上面来看,<connectionStrings />存储于<configuration />结,因此<connectionStrings />就是<configuration />所要表述的成员之一,也就是说每一个结点都存储应用程序的一些信息,而它们都是用过XML 属性结构归类的.我们要实现ASP.NET的应用程序的灵活性,很大程度上依赖了这些配置文件.举一个简单的例子:当我们在.ASPX文件中连接数据源时,需要先定义连接字符串,但是一套完整的应用程序包括很多数据源,也包括很多连接数据源的代码,因此你必须考虑把这些连接字符串统一的管理,统一的调用,就像定义了一个"全局变量",随时随地,任何时间任何地点(程序集)都可以调用出来,当我们需要更改连接字符的时候,也只需要在"全局变量"中修改即可.呵呵,有没有发现这个ASP.NET中最令人兴奋的技术呢?那么你就试试吧,下面是间单的例子:
class OleDb
{
public static void ConnectionDleDb()
{
using (OleDbConnection conn = new OleDbConnection(GetConnSring()))
{
OleDbCommand command = conn.CreateCommand();
command.CommandText = GetCommandString();
try
{
conn.Open();
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.Write("/t{0}/t{1}",reader[0],reader[1]);
Console.WriteLine("/n");
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
throw;
}
}
}
private static string GetConnSring()
{
ConnectionStringSettings settings =
ConfigurationManager.ConnectionStrings["NorthwindConnectionString"];
return (settings.ConnectionString);
}
private static string GetCommandString()
{
return (@"SELECT CategoryID, CategoryName FROM dbo.Categories;");
}
}
在这里,我们正好用到了Web.Config配置文件中的NorthwindConnectionString项,它存储了我们定义的一个连接字符串,在类OleDb中,方法GetConnSring使用ConfigurationManager类将Web.Config配置文件中的值取出,ConfigurationManager类则是.NET公开所的,提供给程序员的Web.Config文件操作类,在.NET类库中包含了很多实现类似功能的类,比如"成员资格提供程序","角色提供程序",它们与Web.Config配置文件配合组成了非常高效的应用程序管理机制.
以下是MSDN的相关文章:
---------------------------------------------------
使用 ASP.NET 配置系统的功能,可以配置整个服务器上的所有 ASP.NET 应用程序、单个 ASP.NET 应用程序、各个页面或应用程序子目录。可以配置各种功能,如身份验证模式、页缓存、编译器选项、自定义错误、调试和跟踪选项等等。
以下各节描述了 ASP.NET 配置系统的功能。
有关配置 .NET Framework 客户端应用程序的信息,请参见配置应用程序。
注意
ASP.NET 配置系统的功能仅适用于 ASP.NET 资源。例如,Forms 身份验证仅限制对 ASP.NET 文件的访问,而不限制对静态文件或 ASP(传统型)文件的访问,除非这些资源映射到 ASP.NET 文件扩展名。要配置非 ASP.NET 资源,应使用 Internet 信息服务 (IIS) 的配置功能。有关信息,请参见 Working with the IIS Metabase(使用 IIS 元数据库)和 IIS Metabase Property Reference(IIS 元数据库属性参考)。
配置文件
ASP.NET 配置数据存储在全部命名为 Web.config 的 XML 文本文件中,Web.config 文件可以出现在 ASP.NET 应用程序的多个目录中。使用这些文件,可以在将应用程序部署到服务器上之前、期间或之后方便地编辑配置数据。可以通过使用标准的文本编辑器、ASP.NET MMC 管理单元、网站管理工具或 ASP.NET 配置 API 来创建和编辑 ASP.NET 配置文件。
ASP.NET 配置文件将应用程序配置设置与应用程序代码分开。通过将配置数据与代码分开,可以方便地将设置与应用程序关联,在部署应用程序之后根据需要更改设置,以及扩展配置架构。
有关如何对 ASP.NET 配置文件中的数据进行组织的更多信息,请参见 ASP.NET 配置文件。ASP.NET 配置设置 中描述了可用的配置设置。
配置文件层次结构和继承
每个 Web.config 文件都将配置设置应用于它所在的目录以及它下面的所有子目录。可以选择用子目录中的设置重写或修改父目录中指定的设置。通过在 location 元素中指定一个路径,可以选择将 Web.config 文件中的配置设置应用于个别文件或子目录。
ASP.NET 配置层次结构的根为 systemroot\Microsoft.NET\Framework\versionNumber\CONFIG\Web.config 文件,该文件包括应用于所有运行某一具体版本的 .NET Framework 的 ASP.NET 应用程序的设置。由于每个 ASP.NET 应用程序都从根 Web.config 文件那里继承默认配置设置,因此只需为重写默认设置的设置创建 Web.config 文件。
注意
根 Web.config 文件从 Machine.config 文件那里继承一些基本配置设置,这两个文件位于同一个目录中。其中的某些设置不能在 Web.config 文件中被重写。有关更多信息,请参见 ASP.NET 配置文件层次结构和继承。
运行时,ASP.NET 使用 Web.config 文件按层次结构为传入的每个 URL 请求计算唯一的配置设置集合。这些设置只计算一次,随后将缓存在服务器上。ASP.NET 检测对配置文件进行的任何更改,然后自动将这些更改应用于受影响的应用程序,而且大多数情况下会重新启动应用程序。只要更改层次结构中的配置文件,就会自动计算并再次缓存分层配置设置。除非 processModel 节已更改,否则 IIS 服务器不必重新启动,所做的更改即会生效。
有关 ASP.NET 配置层次结构的工作原理的更多信息,请参见 ASP.NET 配置文件层次结构和继承和 ASP.NET 配置方案。
直接编辑配置文件
可以使用文本编辑器或 XML 编辑器来直接编辑配置文件。有关正确的语法,请参见 ASP.NET 配置设置和 常规配置设置 (ASP.NET) 中有关配置节的参考主题。有关更多信息,请参见编辑 ASP.NET 配置文件。
配置工具
使用 ASP.NET 配置系统所提供的工具来配置应用程序比使用文本编辑器简单,因为这些工具包括错误检测功能。
ASP.NET MMC 管理单元
用于 ASP.NET 的 Microsoft 管理控制台 (MMC) 管理单元提供一种在本地或远程 Web 服务器上的所有级别操作 ASP.NET 配置设置的方便途径。ASP.NET MMC 管理单元使用 ASP.NET 配置 API,但是它通过提供一个图形用户界面 (GUI) 来简化配置设置的编辑过程。另外,该工具还支持多个 ASP.NET 配置 API 功能,这些功能控制 Web 应用程序是否可以继承设置,并管理配置层次结构各级别之间的依赖性。
注意
若要使用 ASP.NET MMC 管理单元,必须使用具有管理权限的帐户登录到计算机。
ASP.NET MMC 管理单元在虚拟目录的属性页上显示为“ASP.NET”选项卡。
有关更多信息,请参见 ASP.NET MMC 管理单元。
网站管理工具
对网站具有管理权限的任何人都可以使用网站管理工具来管理该网站的配置设置。网站管理工具旨在为各个网站中最常用的配置设置提供一个用户友好的图形编辑工具。由于网站管理工具使用基于浏览器的界面,因此它允许您远程更改网站设置,这对于管理已经部署到成品 Web 服务器的站点(如承载的网站)非常有用。
网站管理工具与 ASP.NET MMC 管理单元在若干方面存在不同。例如,ASP.NET MMC 管理单元最适于管理员级别的配置,因为它提供对 Web 服务器上的整个配置文件层次结构的访问,而不是提供对单个网站的配置设置的访问。此外,您还必须是管理员才能使用 ASP.NET MMC 管理单元,而网站管理工具只允许各个网站所有者在他们具有管理权限的站点的根目录中配置 Web.config 文件。最后,您不能使用 ASP.NET MMC 管理单元来远程管理 IIS,但是,网站管理工具的浏览器界面允许远程配置 IIS 6.0 和更高版本的 IIS。
网站管理工具包括一个选项卡式界面,该界面在下列选项卡上对相关的配置设置进行分组:
“安全”选项卡,其中包含有助于保护 Web 应用程序资源并管理用户帐户和角色的设置。
“配置文件”选项卡,其中包含用来管理网站如何收集访问者信息的设置。
“应用程序”选项卡,其中包含用来管理影响 ASP.NET 应用程序的配置元素的设置。
“提供程序”选项卡,其中包含用来添加、编辑、删除、测试或分配应用程序提供程序的设置。
网站管理工具是随 .NET Framework 2.0 版自动安装的。有关该工具如何工作的信息,请参见 ASP.NET 网站管理工具。
命令行工具
.NET Framework 包括几个执行特定配置操作的命令行工具。例如,使用 Aspnet_regiis.exe 工具,可以指定将哪个版本的 .NET Framework 应用于 ASP.NET 应用程序。有关更多信息,请参见 .NET Framework 工具。
ASP.NET 配置 API
ASP.NET 配置系统提供一个完整的托管接口,使用该接口,可以通过编程方式配置 ASP.NET 应用程序,而不必直接编辑 XML 配置文件。另外,ASP.NET 配置 API 还执行下列任务:
通过为配置层次结构中所有级别的数据提供一个集成视图来简化管理任务。
支持部署任务,包括创建配置和用一个脚本配置多台计算机。
为构建 ASP.NET 应用程序、控制台应用程序和脚本、基于 Web 的管理工具和 MMC 管理单元的开发人员提供单一的编程接口。
防止开发人员和管理员进行无效的配置设置。
允许您扩展配置架构。您可以定义新配置参数并编写配置节处理程序以对它们进行处理。
提供从当前正在运行的应用程序获取配置信息的静态方法,以及从单独的应用程序获取配置信息的非静态方法。使用静态方法可以提高应用程序的运行速度,但是这些方法只能从您要获取其配置数据的应用程序内部使用。
有关更多信息,请参见 ASP.NET 配置 API。
配置安全性
ASP.NET 配置系统有助于防止未经授权的用户访问配置文件。ASP.NET 将 IIS 配置为拒绝任何浏览器访问 Machine.config 或 Web.config 文件。对于试图直接请求配置文件的任何浏览器,都返回 HTTP 访问错误 403(禁止)。
另外,将禁止一个 ASP.NET 应用程序中的配置文件访问其他 ASP.NET 应用程序中的配置设置,除非您的配置应用程序在完全信任模式下以对其他应用程序中的配置文件具有读取权限的帐户运行。
有关更多信息,请参见保证 ASP.NET 配置的安全和使用受保护的配置加密配置信息。