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 配置的安全和使用受保護的配置加密配置信息。