aspnet文件夾許可權
Ⅰ 以下哪些是asp.net支持的文件夾
1. Bin文件夾
Bin文件夾包含應用程序所需的,用於控制項、組件或者需要引用的任何其他代碼的可部署程序集。該目錄中存在的任何.dll文件將自動地鏈接到應用程序。如果在該文件夾中留有不用的或過期的文件,則可能出現「二義性引用(ambiguous reference)」異常的風險。換句話說,如果兩個不同的程序集定義相同的類(相同的命名空間和名稱),則ASP.NET運行庫不能決定應該使用哪一個程序集,從而拋出一個異常。在開發時,當我們重新命名一個項目或一個程序集的名稱時,這是常見的錯誤。為了避免這種錯誤,一定不要在該文件夾中保留任何不必要的程序集,或者至少要從配置文件的<assemblies>節中刪除如下代碼行:
<add assembly="*" />
2. App_Browser文件夾
該可選的文件夾包含.browser文件。.browser文件描述瀏覽器(不管是移動設備瀏覽器,還是台式機瀏覽器)的特 征和功能。ASP.NET在安裝路徑下的Config/Browser文件夾中安裝了大量.browser文件,這些文件供所有應用程序共享。我們只是把 當前應用程序特有的瀏覽器文件放在App_Browser文件夾下。.browser文件的內容即時動態地進行編譯,以便向ASP.NET運行庫提供最新 的瀏覽器信息。
讓我們簡單談談擁有一個自定義的.browser文件可能有幫助的場景。設想應用程序使用了一個在某個瀏覽器下不能有效呈現的控制項。在指定的瀏覽器中顯示宿主頁面時,可以編寫一個.browser文件,迫使ASP.NET使用一個不同的適配器來生成該控制項。
<browsers>
<browser id="browserID">
<controlAdapters>
<adapter controlType="Samples.CustomControl"
adapterType="Samples.Adapters.CustomControlAdapter" />
</controlAdapters>
</browser>
</browsers>
假設browserID與ASP.NET識別的標准瀏覽器之一相匹配,則上文所示的.browser文件指示在指定的瀏覽器下使用CustomControlAdapter呈現CustomControl。
3. App_Code文件夾
App_Code文件夾正好在Web應用程序根目錄下,其存儲所有應當作為應用程序的一部分動態編譯的類文件。這些類文件自 動鏈接到應用程序,而不需要在頁面中添加任何顯式指令或聲明來創建依賴性。App_Code文件夾中放置的類文件可以包含任何可識別的ASP.NET組件 ——自定義控制項、輔助類、build提供程序、業務類、自定義提供程序、HTTP處理程序等。
注意 在開發時,對App_Code文件夾的更改會導致整個應用程序重新編譯。對於大型項目,這可能不受歡迎,而且很耗時。為此,鼓勵大家將代碼進行模塊化處理 到不同的類庫中,按邏輯上相關的類集合進行組織。應用程序專用的輔助類大多應當放置在App_Code文件夾中。
App_Code文件夾中存放的所有類文件應當使用相同的語言。如果類文件使用兩種或多種語言編寫,則必須創建特定語言的子目錄,以包含用每種語言編寫的類。一旦根據語言組織這些類文件,就要在web.config文件中為每個子目錄添加一個設置:
<compilation>
<codeSubDirectories>
<add directoryName="VBFolder" />
</codeSubDirectories>
</compilation>
重要的是,特定語言的子目錄應在web.config文件中注冊,否則,不管它們屬於哪個文件夾,App_Code文件夾下 的所有文件將被編譯成一個單獨的程序集。上述配置腳本描述了這么一種情況,即所有的C#文件都放在App_Code文件夾的根目錄下,而把幾個 Visual Basic .NET類文件移入VBFolder目錄中。如果<codeSubDirectories>節中提到的目錄不存在,則會收到一個編譯錯誤提 示。
App_Code根文件夾中的文件被編譯成App_Code_xxx.dll程序集,其中xxx是隨機生成的字元序列。一個 給定子目錄中的文件將被編譯成一個名為App_SubCode_xxx_yyy.dll的動態創建的程序集,其中xxx指示子目錄的名稱,而yyy是一個 隨機字元序列。只有在應用程序根目錄中的web.config文件中進行了設置,<codeSubDirectories>節才有效。
在App_Code目錄或任何其他子目錄中放置一個assemblyinfo.cs文件,可以創建一個強命名的程序集。顯然,如果該文件夾包含Visual Basic .NET文件,那麼將使用assemblyinfo.vb文件。程序集配置文件可以引用一個.snk文件來保存強名稱的密鑰。
注意 給一個程序集設置一個強名稱,首先必須獲得一個公開/私有密鑰對。通過使用強名稱(Strong Name)工具(sn.exe),可以獲得這樣一個密鑰對。強名稱工具是我們可以在.NET Framework的安裝路徑中發現的SDK binary之一。密鑰對文件通常有一個.snk擴展名。可以將該文件保存到一個應用程序文件夾中,並在assemblyinfo.cs文件中引用它,如下所示:
[assembly: AssemblyKeyFileAttribute(@"yourKeyPair.snk")]
注意,Visual Basic .NET是在包含Visual Studio Solution的目錄中尋找密鑰文件,而C#編譯器則在包含該binary的目錄中尋找密鑰文件。據此可知,用此屬性調整我們使用的路徑,或者把密鑰文件放在合適的文件夾中。
在隨後發生的任何重新生成中,程序集的名稱將發生變化。同時,老的AppDomain請求一結束,就刪除老的程序集。
App_Code文件夾並非只能包含類文件。特別是,它可以包含並能自動地處理代表數據架構的XSD文件。把一個XSD文件 添加到該文件夾中時,編譯器將把它解析成一個有類型的DataSet類,並將它添加到應用程序作用域中。在ASP.NET 1.x中,這一工作由Visual Studio .NET向導,使用一個命令行實用程序(xsd.exe)完成的。
注意 使用web.config文件注冊一個組件(例如,一個自定義的伺服器控制項或一個自定義的HTTP處理程序)時,通常要求指定包含該代碼的程序集名稱。如 果該組件定義在App_Code文件夾中,則應該用什麼名稱來指示程序集?在這種情況下,只是忽略程序集信息,並規定完整的類名即可。如果沒有規定任何程 序集,則ASP.NET運行庫將試圖從任何已裝載的程序集中裝入該類,包括為App_Code文件夾動態創建的程序集。
4. App_Data文件夾
App_Data文件夾應該包含應用程序的本地數據存儲。它通常以文件(諸如Microsoft Access或Microsoft SQL Server Express資料庫、XML文件、文本文件以及應用程序支持的任何其他文件)形式包含數據存儲。該文件夾內容不由ASP.NET處理。該文件夾是ASP.NET提供程序存儲自身數據的默認位置。
注意 默認ASP.NET帳戶被授予對文件夾的完全訪問許可權。如果碰巧要改變ASP.NET帳戶,一定要確保新帳戶被授予對該文件夾的讀/寫訪問權。
5. App_GlobalResources文件夾
正如其他應用程序一樣,ASP.NET應用程序也可以使用資源,而且通常應該使用資源。資源是隔離應用程序用戶界面的可局部 化部分的一種有效方法。一般而言,資源是與程序相關的不可執行的文本。典型的資源有圖像、圖標、文本和附屬文件,但是任何可序列化的對象也可以被看作資 源。應用程序資源存儲在應用程序的外部,這樣就能在不影響和重新編譯應用程序本身的情況下重新編譯和替換它們。
ASP.NET應用程序需要有一個主要程序集來保存應用程序默認的或中性的資源。此外,還要部署許多附屬程序集,它們中各自 包含我們需要支持的某種文化的本地化資源。在ASP.NET 1.x中,編譯一個程序集內的資源有點麻煩。需要手動地將基於XML的資源文件(那些帶.res擴展名的資源)編譯成.resources二進制文件。這 些文件既可以嵌入到一個.NET可執行文件中,也可以編譯成附屬程序集。使用資源文件生成器實用程序resgen.exe,將文本和基於XML的資源文件 轉變為.resource文件。資源文件名稱遵循baseName.cultureName.resource命名約定,其中baseName通常是應用 程序的名稱:
resgen.exe ProAspNet20.resx ProAspNet20.it.resources
創建.resource文件以後,應當把它嵌入到一個程序集中,甚至可以作為一個資源容器來使用。要把一個資源文件嵌入到一個附屬程序集中,可以使用程序集連接器工具(al.exe)。在命令行上,指出程序集所使用的文化(如下面示例中的it,它代表義大利)和名稱。
al /out:ProAspNet20.resources.dll /c:it /embed:ProAspNet20.it.resources
在編譯附屬程序集之後,它們將有相同的名稱。將它們部署到不同的子目錄中,分別按文化命名。
幸運的是,對於ASP.NET 2.0,附屬程序集的時代已經一去不復返了。更准確地說,附屬程序集仍然存在,但是由於App_GlobalResources保留文件夾,對開發人員來說它們已經成為過去的事情。
該文件夾中的任何定位的.resx文件自動地被編譯成附屬程序 集。.resx文件的名稱包含文化信息,以幫助ASP.NET運行庫環境的程序集生成。如下文件,resources.resx, resources.it.resx, resources.fr.resx,生成中性程序集以及適合於義大利(Italian)和法國(French)文化的附屬程序集。如果沒有要求特定文 化,則中性程序集是默認的文化資源。
Ⅱ 關於asp.net 的幾個名詞解釋,求助。。
1.Request對象
作用是與客戶端交互,收集客戶端的Form、Cookies、超鏈接,或者收集伺服器端的環境變數。
request對象是從客戶端向伺服器發出請求,包括用戶提交的信息以及客戶端的一些信息。客戶端可通過HTML表單或在網頁地址後面提供參數的方法提交數據,然後通過request對象的相關方法來獲取這些數據。request的各種方法主要用來處理客戶端瀏覽器提交的請求中的各項參數和選項。
Request對象的語法如下:
Request[.collectionlpropertylmethod](variable)
collection集合
clientcertificate 得到在HTTP請求中傳遞在客戶端認證域的值
cookies 使用此集合,可得到cookies值
form 得到form對象中元素的值
querystring 得到變數的值
servervariables 得到預置的環境變數的值
property屬性
totalbytes (只讀)指定從客戶端傳遞總位元組數
buffer 表明頁面輸出是否有緩沖
cachecontrol 決定代理伺服器是否能夠對asp的輸出進行快取
property屬性
charset 字元集
contenttype 指定response的HTTP內容類型
expires 定義一個瀏覽器緩存中的頁面在多長時間後過期
expiresabsolute 定義一個瀏覽器緩存中的頁面什麼日期時間後過期
isclientconnected 用戶是否連接到伺服器
pics 設置pics-label response標題的值,標示pics內容等級
status 由伺服器返回的狀態行
說明:
1、其中collection表示集合,它和數組很類似,是由若干元素組成的集合。不過數組一般只能用索引(下標)來引用每一個元素,而集合不僅可以用索引來引用每一個元素的值,還可以用元素的名稱來引用,如Request.Form("txtA")。事實上,後者是常用的方法。
2、variable又稱參數,它就是要獲取的元素的名稱,可以是字元串常量或字元串變數。例如,對表單信息來說,variable就是每一個表單元素的名稱。
3、「【」和「】」之間的參數可以省略,如Request("txtA")。此時因為沒有指定集合,所以ASP將會依次在QueryString、Form、Cookies、ServerVariables、ClientCertificate這5種集合中檢查是否有信息傳入。如果有信息傳入,則會返回獲取的信息。
4、請注意上面的第二個例子,其中前面的strB是定義的一個變數名稱,而後面的strB則是集合中一個元素的名稱,兩者不是一回事。
method方法
binaryread 得到從客戶端傳給伺服器端的數據
1.Request對象是ASP中常用的對象,用於獲取客戶端的信息,可以使用Request對象訪問任何基於HTTP請求傳遞的所有信息。通過Request對象能夠獲得客戶端發送給伺服器的信息,不能將伺服器端的數據發送給客戶端的瀏覽器。Request對象的屬性TotalBytes的功能是取得客戶端響應數據位元組大小。Request對象的方法BinaryRead的功能是以二進制方式讀取客戶端post的數據。
request對象有五個集合,下面予以介紹:
QueryString
:用以獲取客戶端附在url地址後的查詢字元串中的信息。
例如:stra=Request.QueryString ["strUserld"]
Form
:用以獲取客戶端在FORM表單中所輸入的信息。(表單的method屬性值需要為POST)
例如:stra=Request.Form["strUserld"]
Cookies
:用以獲取客戶端的Cookie信息。
例如:stra=Request.Cookies["strUserld"]
ServerVariables
:用以獲取客戶端發出的HTTP請求信息中的頭信息及伺服器端環境變數信息。
例如:stra=Request.ServerVariables["REMOTE_ADDR"],返回客戶端IP地址
ClientCertificate
:用以獲取客戶端的身份驗證信息
例如:stra=Request.ClientCertificate["VALIDFORM"],對於要求安全驗證的網站,返回有效起始日期。
2session對象
用於存儲特定的用戶會話所需的信息 。 Session對象的引入是為了彌補HTTP協議的不足,HTTP協議是一種無狀態的協議。
Session中文是「會話」的意思,在ASP中代表了伺服器與客戶端之間的「會話」。Session的作用時間從用戶到達某個特定的Web頁開始,到該用戶離開Web站點,或在程序中利用代碼終止某個Session結束。引用Session 則可以讓一個用戶訪問多個頁面之間的切換也會保留該用戶的信息。
系統為每個訪問者都設立一個獨立的Session對象,用以存儲Session變數,並且各個訪問者的Session對象互不幹擾。
Session與Cookie是緊密相關的。 Session的使用要求用戶瀏覽器必須支持Cookie,如果瀏覽器不支持使用Cookie,或者設置為禁用Cookie,那麼將不能使用Session。
Session信息對客戶來說,不同的用戶用不同的Session信息來記錄。當用戶啟用Session時,ASP自動產生一個SessionID.在新會話開始時,伺服器將SessionID當做cookie存儲在用戶的瀏覽器中。
session語法:
session.集合∣屬性∣方法
舉例:
<html>
<head>
<title>學好session加油</title>
</head>
<body>
<%
session("greeting")="ASP「
Response.write(session("greeting"))
%>
</body>
</html>
Session對象的集合、屬性、方法、事件
名稱 描述
Contents集合 包含所有通過腳本命令添加到應用程序中的數據項
SessionID屬性 用來標識每一個Session對象
TimeOut屬性 用來設置Session會話的超時時間(以分鍾表示)
Abandon方法 強行刪除當前會話的Session對象,釋放系統資源
Session_OnStart事件 建立Session對象時所激發的事件
Session_OnEnd事件 結束Session對象時所激發的事件
StaticObjects集合 包含所有通過<OBJECT>標記添加到應用程序中的對象
3
CompareValidator 控制項用於將由用戶輸入到輸入控制項的值與輸入到其他輸入控制項的值或常數值進行比較。
注釋:如果輸入控制項為空,則不會調用任何驗證函數,並且驗證將成功。使用 RequiredFieldValidator 控制項使欄位成為必選欄位。
屬性
屬性 描述
BackColor CompareValidator 控制項的背景顏色。
ControlToCompare 要與所驗證的輸入控制項進行比較的輸入控制項。
ControlToValidate 要驗證的輸入控制項的 ID。
Display 驗證控制項中錯誤信息的顯示行為。
合法值是:
None 驗證消息從不內聯顯示。
Static 在頁面布局中分配用於顯示驗證消息的空間。
Dynamic 如果驗證失敗,將用於顯示驗證消息的空間動態添加到頁面。
EnableClientScript 布爾值,規定是否啟用客戶端驗證。
Enabled 布爾值,規定是否啟用驗證控制項。
ErrorMessage 當驗證失敗時在 ValidationSummary 控制項中顯示的文本。
注釋:如果未設置 Text 屬性,此文本將顯示在驗證控制項中。
ForeColor 控制項的前景顏色。
id 控制項的唯一 ID。
IsValid 布爾值,指示由 ControlToValidate 指定的輸入控制項是否通過驗證。
Operator 要執行的比較操作的類型。
運算符是:
Equal
GreaterThan
GreaterThanEqual
LessThan
LessThanEqual
NotEqual
DataTypeCheck
runat 規定控制項是伺服器控制項。必須設置為 "server"。
Text 當驗證失敗時顯示的消息。
Type 規定要對比的值的數據類型。
類型有:
Currency
Date
Double
Integer
String
ValueToCompare 一個常數值,該值要與由用戶輸入到所驗證的輸入控制項中的值進行比較。
實例
CompareValidator
在此例中,我們在 .aspx 文件中聲明了兩個 TextBox 控制項,一個 Button 控制項,以及一個 CompareValidator 控制項。如果驗證失敗,將在 CompareValidator 控制項中使用黃色背景紅色文本顯示 "Validation Failed!"。
CompareValidator 2
在此例中,我們在 .aspx 文件中聲明了兩個 TextBox,一個 ListBox 控制項,一個 Button 控制項,以及一個 CompareValidator 控制項。check_operator() 函數把 ListBox 控制項中選取的運算符設置為 CompareValidator 控制項的運算符,然後對 CompareValidator 控制項進行驗證。如果驗證失敗,將在 CompareValidator 控制項中使用黃色背景和紅色文本顯示 "Validation Failed!"。
4.FileUpload控制項
FileUpload 控制項顯示一個文本框控制項和一個瀏覽按鈕,使用戶可以選擇客戶端上的文件並將它上載到 Web 伺服器。用戶通過在控制項的文本框中輸入本地計算機上文件的完整路徑(例如,C:\MyFiles\TestFile.txt)來指定要上載的文件。用戶也可以通過單擊「瀏覽」按鈕,然後在「選擇文件」對話框中定位文件來選擇文件。
用戶選擇要上載的文件後,FileUpload 控制項不會自動將該文件保存到伺服器。您必須顯式提供一個控制項或機制,使用戶能提交指定的文件。例如,可以提供一個按鈕,用戶單擊它即可上載文件。為保存指定文件所寫的代碼應調用 SaveAs 方法,該方法將文件內容保存到伺服器上的指定路徑。通常,在引發回發到伺服器的事件的事件處理方法中調用 SaveAs 方法。
在文件上傳的過程中,文件數據作為頁面請求的一部分,上傳並緩存到伺服器的內存中,然後再寫入伺服器的物理硬碟中。
有三個方面需要注意:
1.確認是否包含文件
在調用 SaveAs 方法將文件保存到伺服器之前,使用 HasFile 屬性來驗證 FileUpload 控制項確實包含文件。若 HasFile 返回 true,則調用 SaveAs 方法。如果它返回 false,則向用戶顯示消息,指示控制項不包含文件。不要通過檢查PostedFile 屬性來確定要上載的文件是否存在,因為默認情況下該屬性包含 0 位元組。因此,即使 FileUpload 控制項為空,PostedFile 屬性仍返回一個非空值。
2.文件上傳大小限制
默認情況下,上傳文件大小限制為 4096 KB (4 MB)。可以通過設置 httpRuntime 元素的 maxRequestLength 屬性來允許上載更大的文件。若要增加整個應用程序所允許的最大文件大小,請設置 Web.config 文件中的 maxRequestLength 屬性。若要增加指定頁所允許的最大文件大小,請設置 Web.config 中 location 元素內的 maxRequestLength 屬性。
上載較大文件時,用戶也可能接收到以下錯誤信息:
aspnet_wp.exe (PID: 1520) was recycled because memory consumption exceeded 460 MB (60 percent of available RAM).
以上信息說明,上傳文件的大小不能超過伺服器內存大小的60%。這里的60%是Web。config文件的默認配置,是<processModel>配置節中的 memoryLimit 屬性默認值。雖然可以修改,但是如果上傳文件越大,成功幾率越小,不建議使用。
3.上傳文件夾的寫入許可權
應用程序可以通過兩種方式獲得寫訪問許可權。您可以將要保存上載文件的目錄的寫訪問許可權顯式授予運行應用程序所使用的帳戶。您也可以提高為 ASP.NET 應用程序授予的信任級別。若要使應用程序獲得執行目錄的寫訪問許可權,必須將 AspNetHostingPermission 對象授予應用程序並將其信任級別設置為 AspNetHostingPermissionLevel.Medium 值。提高信任級別可提高應用程序對伺服器資源的訪問許可權。請注意,該方法並不安全,因為如果懷有惡意的用戶控制了應用程序,他(她)也能以更高的信任級別運行應用程序。最好的做法就是在僅具有運行該應用程序所需的最低特權的用戶上下文中運行 ASP.NET 應用程序。
FileUpload控制項的常用屬性:
屬性
數據類型
說明
FileBytes
byte[]
獲取上傳文件的位元組數組
FileContent
Stream
獲取指定上傳文件的Stream對象
FileName
String
獲取上傳文件在客戶端的文件名稱
HasFile
Bool
獲取一個布爾值,用於表示FileUpload控制項是否已經包含一個文件
PostedFile
HttpPostedFile
獲取一個與上傳文件相關的HttpPostedFile對象,使用該對象可以獲取上傳文件的相關屬性
可以通過3種方法訪問上傳文件:
1.通過FileBytes屬性。該屬性將上傳文件數據置於位元組數組中,遍歷該數組,則能夠以位元組方式了解上傳文件的內容。
2.通過FileContent屬性。調用該屬性可以獲得一個指向上傳文件的Stream對象。可以使用該屬性讀取上傳文件數據,並使用FileBytes屬性顯示文件內容。
3.通過PostedFile屬性。調用該屬性可以獲得一個與上傳文件相關的HttpPostedFile對象,使用該對象可以獲得與上傳文件相關的信息。例如,調用HttpPostedFile對象的ContentLength,可以獲得上傳文件大小;調用HttpPostedFile對象的ContentType屬性,可以獲得上傳文件的類型;調用HttpPostedFile對象的FileName屬性,可以獲得上傳文件在客戶端的完整路徑(調用FileUpload控制項的FileName屬性,僅能獲得文件名)。
5.DataAdapter
表示一組 SQL 命令和一個資料庫連接,它們用於填充 DataSet和更新數據源。 命名空間:System.Data.Common
程序集:System.Data(在 system.data.dll 中)
語法 public class DataAdapter : Component, IDataAdapter
DataAdapter 用作 DataSet 和數據源之間的橋接器以便檢索和保存數據。DataAdapter 通過映射Fill(這更改了 DataSet 中的數據以便與數據源中的數據相匹配)和Update(這更改了數據源中的數據以便與 DataSet 中的數據相匹配)來提供這一橋接器。
如果所連接的是 SQL Server 資料庫,則可以通過將SqlDataAdapter與關聯的SqlCommand和SqlConnection對象一起使用,從而提高總體性能。對於支持 OLE DB 的數據源,請使用 DataAdapter 及其關聯的OleDbCommand和 OleDbConnection 對象。對於支持 ODBC 的數據源,請使用 DataAdapter 及其關聯的OdbcCommand和OdbcConnection對象。對於 Oracle 資料庫,請使用 DataAdapter 及其關聯的OracleCommand和OracleConnection對象。
當創建 DataAdapter 的實例時,讀/寫屬性將被設置為初始值。有關這些值的列表,請參見 DataAdapter 構造函數
這些都出自網路。其實我也不懂。能幫一點幫一點吧。
Ⅲ 關於Asp.net目錄下文件提供下載的許可權
首先對iis進行配置,添加aspnet_isapi的應用程序通配符映射,使每次請求都託管給aspnet_isapi,這時才能確保對.rar之類的文件的請求可以由程序來處理...
第2步是web.config中實現一個自己寫的HttpHandler,主要針對*.rar,*.zip的請求,先判斷請求來路,如果請求來路不是來自主機本身,則重定向到一個錯誤的頁面即可.具體怎麼實現你可以網上查下或者MSDN查下,很簡單的..這時直接對文件的請求將不會發生下載效果了,而是被定向到另外個頁面
第3步,資料庫設計時,每條文件記錄肯定要加個許可權等級的欄位,只有大於這個等級的用戶才能下載..具體怎麼判斷是很簡單的了...
還有,在輸出下載文件列表時不要直接輸出文件路徑,而是 <a href="download.aspx?id=1">下載文件1</a> 這樣的路徑,在download.aspx中根據傳來的id從資料庫獲得文件信息,判斷許可權...許可權通過,則Response.Redrict(文件路徑),否則重定向到許可權不足的錯誤頁面
Ⅳ ASP.NET 未被授權訪問所請求的資源。請考慮授予 ASP.NET 請求標識訪問此資源的許可權。
我建議你先去到事件查看器中查看一下iis的報錯,然後拿著這個報錯去晚上搜一下,我這邊之前碰上這個問題,最否發現iis報錯2208,需要修改相關的配置文件,也有一次是因為iis sid未授權導致的,總之xiankaniis具體報錯。
Ⅳ asp.net 中的App_Data文件夾作用
存放資料庫文件的,比如ACCESS,SQL 2005 簡化版 貌似也可以
在代碼中可以方便的調用|DataDirectory|可以直接訪問app_data文件夾
以下是其他一些ASP.NET的常用文件夾
1. Bin文件夾
Bin文件夾包含應用程序所需的,用於控制項、組件或者需要引用的任何其他代碼的可部署程
序集。該目錄中存在的任何.dll文 件將自動地鏈接到應用程序。
2. App_Browser文件夾
該可選的文件夾包含.browser文件。.browser文件描述瀏覽器(不管是移動設備瀏覽器,還
是台式機瀏覽器)的特 征和功能。
3. App_Code文件夾
App_Code文件夾正好在Web應用程序根目錄下,其存儲所有應當作為應用程序的一部分動態
編譯的類文件。這些類文件自 動鏈接到應用程序,而不需要在頁面中添加任何顯式指令或
聲明來創建依賴性。App_Code文件夾中放置的類文件可以包含任何可識別的ASP.NET組件
——自定義控制項、輔助類、build提供程序、業務類、自定義提供程序、HTTP處理程序等。
注意 在開發時,對App_Code文件夾的更改會導致整個應用程序重新編譯。對於大型
項目,這可能不受歡迎,而且很耗時。為此,鼓勵大家將代碼進行模塊化處理 到不同的類
庫中,按邏輯上相關的類集合進行組織。應用程序專用的輔助類大多應當放置在App_Code文
件夾中。
App_Code文件夾中存放的所有類文件應當使用相同的語言。如果類文件使用兩種或多種語言
編寫,則必須創建特定語言的子目錄,以包含用每種語言編寫的類。一旦根據語言組織這些
類文件,就要在web.config文件中為每個子目錄添加一個設置:
<compilation>
<codeSubDirectories>
<add directoryName="VBFolder" />
</codeSubDirectories>
</compilation>
重要的是,特定語言的子目錄應在web.config文件中注冊,否則,不管它們屬於哪個文件夾
,App_Code文件夾下 的所有文件將被編譯成一個單獨的程序集。上述配置腳本描述了這么
一種情況,即所有的C#文件都放在App_Code文件夾的根目錄下,而把幾個 Visual Basic
.NET類文件移入VBFolder目錄中。如果<codeSubDirectories>節中提到的目錄不存在,則
會收到一個編譯錯誤提 示。
App_Code根文件夾中的文件被編譯成App_Code_xxx.dll程序集,其中xxx是隨機生成的字元
序列。一個 給定子目錄中的文件將被編譯成一個名為App_SubCode_xxx_yyy.dll的動態創
建的程序集,其中xxx指示子目錄的名稱,而yyy是一個 隨機字元序列。只有在應用程序根
目錄中的web.config文件中進行了設置,<codeSubDirectories>節才有效。
在App_Code目錄或任何其他子目錄中放置一個assemblyinfo.cs文件,可以創建一個強命名
的程序集。顯然,如果該文件夾包含Visual Basic .NET文件,那麼將使用
assemblyinfo.vb文件。程序集配置文件可以引用一個.snk文件來保存強名稱的密鑰。
注意 給一個程序集設置一個強名稱,首先必須獲得一個公開/私有密鑰對。通過
使用強名稱(Strong Name)工具(sn.exe),可以獲得這樣一個密鑰對。強名稱工具是我們可
以在.NET Framework的安裝路徑中發現的SDK binary之一。密鑰對文件通常有一個.snk擴
展名。可以將該文件保存到一個應用程序文件夾中,並在assemblyinfo.cs文件中引用它,
如下所示:
[assembly: AssemblyKeyFileAttribute(@"yourKeyPair.snk")]
注意,Visual Basic .NET是在包含Visual Studio Solution的目錄中尋找密鑰文件,
而C#編譯器則在包含該binary的目錄中尋找密鑰文件。據此可知,用此屬性調整我們使用的
路徑,或者把密鑰文件放在合適的文件夾中。
在隨後發生的任何重新生成中,程序集的名稱將發生變化。同時,老的AppDomain請求一結
束,就刪除老的程序集。
App_Code文件夾並非只能包含類文件。特別是,它可以包含並能自動地處理代表數據架構的
XSD文件。把一個XSD文件 添加到該文件夾中時,編譯器將把它解析成一個有類型的
DataSet類,並將它添加到應用程序作用域中。在ASP.NET 1.x中,這一工作由Visual
Studio .NET向導,使用一個命令行實用程序(xsd.exe)完成的。
注意 使用web.config文件注冊一個組件(例如,一個自定義的伺服器控制項或一
個自定義的HTTP處理程序)時,通常要求指定包含該代碼的程序集名稱。如 果該組件定義
在App_Code文件夾中,則應該用什麼名稱來指示程序集?在這種情況下,只是忽略程序集信
息,並規定完整的類名即可。如果沒有規定任何程 序集,則ASP.NET運行庫將試圖從任何
已裝載的程序集中裝入該類,包括為App_Code文件夾動態創建的程序集。
4. App_Data文件夾
App_Data文件夾應該包含應用程序的本地數據存儲。它通常以文件(諸如Microsoft
Access或Microsoft SQL Server Express資料庫、XML文件、文本文件以及應用程序支持
的任何其他文件)形式包含數據存儲。該文件夾內容不由ASP.NET處理。該文件夾是ASP.NET
提供程序存儲自身數據的默認位置。
注意 默認ASP.NET帳戶被授予對文件夾的完全訪問許可權。如果碰巧要改變
ASP.NET帳戶,一定要確保新帳戶被授予對該文件夾的讀/寫訪問權。
5. App_GlobalResources文件夾
6. App_LocalResources文件夾
7. App_Themes文件夾
App_Themes文件夾為ASP.NET控制項定義主題。主題包含在App_Themes文件夾下的一個文件夾
。根據定義,一個主題是一組帶有樣式信息的文件。主題文件夾中的文件內容被編譯,以生
成一個類,而該類被頁面調用以編程的方式設置主題化控制項的樣式。
App_Themes文件夾列出應用程序的本地主題。 應用程序還可以繼承如下文件夾中定義的全
局主題:
%WINDOWS%\Microsoft.NET\Framework\[version]\ASP.NETClientFiles\Themes
從編譯的角度看,全局主題和局部主題沒有區別。如果一個給定名稱的主題,既存在應用程
序的本地主題,又存在伺服器機器的全局主題,則本地主題優先適用。
8. App_WebReferences文件夾
在Visual Studio .NET 2003中,一個需要訪問Web服務的ASP.NET應用程序,將通過「添
加Web引用」對話框獲得相應的.wsdl文件。Web服務的WSDL(Web Service Description
Language)文檔,對於從頁面使用Web服務是不夠的。ASP.NET頁面最終是一個託管類,並且
需要與另一個託管類通信。因此,Web服務被一個 代理類所包裝。該代理類是由Visual
Studio使用命令行工具wsdl.exe的服務創建的。該代理類盡量包含與Web服務商的Web方法一
樣多的方法,並且它結合了Web服務的公共介面 定義的任何自定義的數據類型。
這個操作不需要開發人員付出很大的代價。然而,開發人員顯然要依賴於Visual Studio來
生成代理類。如果能夠直接把.wsdl文件放在應用程序的目錄樹的某個地方,並讓ASP.NET處
理其餘的任務,這樣不是更容易、更簡單 嗎?這正好是App_WebReferences文件夾要做的
事情。
它識別那些用來描述所綁定的Web服務的.wsdl文件,並生成運行時代理類,以便ASP.NET頁
面能夠以類型安全的方式 放置對Web服務的調用。App_WebReferences文件夾可以包含子文
件夾。子文件夾的名稱驅動最後所得到的代理類的命名空間,而WSDL文件 定義類名。例如
,samples.wsdl文件和ProsAspNet20子文件夾將創建一個稱為ProAspNet20.Samples的代理
類。該動 態創建的程序集稱為App_WebReferences.xxx.dll,其中xxx是一個隨機的字元序
列。
文件夾名稱
文件類型
注 釋
Bin
.dll
包含應用程序所需的任何預生成的程序集
App_Browsers
.browser
包含應用程序特有的瀏覽器定義文件,ASP.NET用它來識別各瀏覽器及確定它們的功能
App_Code
.cs、.vb、.xsd、自定義的文件類型
包含作為應用程序的一部分編譯的類的源文件。當頁面被請求時,ASP.NET編譯該文件夾
中的代碼。該文件夾中的代碼在應用程序中自動地被引用
App_Data
.mdb、.mdf、.xml
包含Microsoft Office Access和SQL Express文件以及XML文件或其他數據存儲
App_GlobalResources
.resx
包含在本地化應用程序中以編程方式使用的資源文件
App_LocalResources
.resx
包含頁面范圍的資源文件
App_Themes
.skin、.CSS、.xsl、附屬文件
包含一組定義ASP.NET頁面和控制項外觀的文件
App_WebReferences
.wsdl