ASP.NET項目配置和最佳化
1.通過Web.Config檔案實現
2.如何配置Web.Config檔案:
(1)配置ASP.NET身分識別驗證 <authentication mode="?">
mode="Windows"(IIS根據應用程式設定執行身分識別驗證,IIS必須禁止匿名訪問)
mode="Forms"(表單登入身分識別驗證,使用者身份標記儲存於Cookie對象中)
mode="PassPort"(通過Microsoft的集中驗證服務執行,為網站提供不同使用者訪問此應用程式資源)
mode="None" (不執行身分識別驗證)
例如:當沒有登入的使用者訪問需要身分識別驗證的網頁時,網頁自動跳轉到登入頁面,其中loginUrl是登入頁面名稱,name是Cookie名稱。
<authentication mode="Forms"><forms loginUrl="login.aspx" name=".FormsAuthCookie"/></authentication>
(2)控制對URL資源的用戶端訪問(如允許匿名使用者存取) <authorization>
【注意】必須與<authentication>配合使用,也可以使用user.identity.name來擷取已經通過驗證的目前使用者名,可以使用web.Security.FormsAuthentication.RedirectFormLoginPage方法將已經驗證的使用者重新導向到使用者剛請求的頁面。
例如:禁止匿名使用者的訪問:(允許則用allow)
<authorization><deny user="?"/></authorization>
(3)配置ASP.NET使用的所有編譯設定 <compilation>
<compilation DefaultLanguage="VB.NET/C#"> 預設使用後台代碼的語言
<compilation Debug="true/false">調式程式:True表示將啟動ASPX調試;False可以提高應用程式的運行效能,不過建議在程式開發調試時,設定為“True”;交於客戶使用則設定為“False”
(4)為ASP.NET應用程式提供有關自訂錯誤資訊的資訊 <customErrors mode="?">
【注意】它不適用於XML Web Services中發生的錯誤
<customErrors mode="On">表示一直顯示自訂資訊
<customErrors mode="Off">表示一直顯示詳細的ASP.NET錯誤資訊
<customErrors mode="RemoteOnly">只對不在本地WEB伺服器上啟動並執行使用者(遠端使用者)顯示自訂資訊
例如:當錯誤發生時將網頁跳轉到自訂的錯誤頁面。
<customErrors defaultRedirect="ErrorPage.aspx" mode="RemoteOnly"></customErrors>
(5)配置ASP.NET HTTP運行庫的設定 <httpRuntime>
例如:指定使用者上傳檔案最大為4MB,最長時間為60s,最多請求數為100.
<httpRuntime maxRequestLength="4096" executionTimeout="60" appRequestQueueLimit="100">
(6)配置用於標識特定頁設定(如是否啟用工作階段狀態、檢視狀態、是否檢測使用者輸入等) <pages>
例如:不檢測使用者在瀏覽器輸入的內容中是否存在潛在危險資料,在用戶端返回頁時檢查加密的檢視狀態,以驗證檢視狀態是否已在用戶端被篡改。
<pages buffer="true" enableViewStateMac="true" validateRequest="false"/></pages>
(7)配置當前應用程式工作階段狀態(是否啟用工作階段狀態、工作階段狀態儲存位置等等) <sessionState>
<sessionState Mode="Off/InProc/StateServer/SqlServer">Off禁用工作階段狀態、InProc背景工作處理序自身儲存工作階段狀態、StateServer將會話資訊儲存在一個單獨的ASP.NET狀態服務中、SqlServer將會話資訊儲存在SQL server資料庫中。
<sessionState StateConnectionString="?">儲存遠端工作階段狀態的伺服器名,預設為本地。
<sessionState Cookieless="True/False">True表示不使用Cookie會話標識客戶,False表示啟動Cookie工作階段狀態。
<sessionState SqlConnectionString="資料庫連接字串">設定SQL Server資料庫連接
<sessionState Timeout="20">設定會話時間,超到期限會自動中斷會話,預設設定為20(分鐘)
例如:儲存在本地且使用者瀏覽器不支援Cookie時啟用工作階段狀態,會話處於空閑狀態的分鐘數為20分鐘
<sessionState mode="InProc" cookieless="true" timeout="20"/></sessionState>
(8)配置ASP.NET的Tracing Service <trace>
判斷程式測試哪裡出錯
例如:程式不啟用跟蹤,在伺服器上儲存的跟蹤請求數為10,只能通過跟蹤工具 + 生產力訪問跟蹤輸出,處理跟蹤的時間順序來顯示跟蹤資訊,跟蹤查看器(trace.axd),只用於當地Web伺服器。
<trace enable="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true"/>
(9)自訂Web.config檔案配置:
例如:
<configuration>
<configSections> //聲明配置節的名稱和配置著作權資訊
<section name="appSettings" type="System.Configuration.NameValueFileSectionHandler,System,Version=1.0.3300.0,Culture=netural,PublicKeyToken=b77a5c561934e089"/>
</configSections>
<appSettings> //實際配置設定
<add key="ss" value="server=a;database=northwind;uid=sa;pwd=111"/>
</appSettings>
<system.web>
....
</system.web>
</configuration>
如何來調用上面的資料庫連接?
protected static string Isdebug=ConfigurationSettings.AppSettings["debug"]
3.比較常用的一些web配置:
<!--禁用用戶端驗證-->
<pages validateRequest="false"/>
<!--上傳檔案大小,最大大小200M-->
<httpRuntime exection Timeout="9999" maxRequestLength="204800" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100"/>
<!--SqlServer資料庫連接字串配置-->
<connectionStrings>
<add name="連接字串名" connectionString="Data Source=伺服器名;Integrated Security=SSPI;Initial Catalog=資料庫名;"/>
<add name="連接字串名" connectionString="Data Source=.(本機伺服器名);Initial Catalog=資料庫名;User ID=Sql Server使用者名稱;Password=Sql Server密碼" providerName="System.Data.SqlClient"/>
</connectionStrings>