跟蹤
1)利用asp.net提供跟蹤技術使用者可以察看某個asp.net頁面中請求的詳細資料。
包含表單中所有Web控制項的資訊,session,cookie,application等資訊
2)利用asp.net跟蹤技術可以快速的瞭解一個asp.net頁面的執行過程,細節,從而
協助我們排除頁面中錯誤
3)跟蹤的分類
A:頁面級跟蹤:<%@ page trace="true" tracemode="指定模式"%>
B:可以通過Trace.warn("資訊")來把使用者自訂的訊息顯示在跟蹤的結果中,會以紅色字型顯示
C:應用程式級跟蹤:可以對一個Web應用程式的所有頁進行跟蹤
在web.config檔案中進行配置
<configration>
<system.web>
<trace enabled="true" pageoutput="true"/>
</system.web>
</configration>
緩衝
什麼是緩衝:
1)緩衝技術會把訪問頻率比較高,或者量大的資料暫存在記憶體中
2)以後在訪問時不需要重新建立,可以直接從緩衝中去。
3)所以通過緩衝技術可以顯著提高程式的效能
4)記住:一旦應用程式停止或重新啟動,重新編譯,緩衝就會消失
緩衝的分類:
A:輸出緩衝:
對整個頁面進行緩衝的設定,把整個頁面緩衝起來。
1)<%@ OutputCache Duration="120"> 表示把整個頁面級存120秒。
在頁面的Load事件裡面寫上如下代碼:
response.write(DateTime.now.tostring());
結果:在開啟的120秒內不斷訪問頁面,會發現時間沒有變化,因為是從
緩衝中取出的。但是如果在120秒之後來訪問此時時間會發生改變,
因為緩衝會更新,從伺服器中去頁面。但是在接下來的120秒之內依然保持不變
B:資料緩衝:
緩衝是不是整個頁面,而是頁面中的每些資料。通常會把從資料庫查詢出來的
資料量大而且訪問頻率高的資料放入資料緩衝中,這是由Cache類來實現的
它的使用格式是:
1)放入緩衝:if (Cache["key"]==null) Cache["key"]=值
2)取資料: 變數名=(類型轉換)Cache["key"];
但是這一種格式的致命的弱點是緩衝不會隨著緩衝中資料的更新而改變,資料的即時性不高
可以通過下面的代碼,讓緩衝中的資料發生改變時,會自動通知緩衝已經到期,從而重建緩衝
在Page_load事件裡面寫上如下代碼:
if (!IsPostBack)
{
Response.Write("開始取資料時間:" + DateTime.Now.ToLongTimeString()+"毫秒:"+DateTime.Now.Millisecond.ToString()+"<br>");
DataTable dt = null;
if (Cache["dt"] == null)
{
string constr=ConfigurationManager.ConnectionStrings["constr"].ConnectionString;//讀取web.config配置資訊
dt = dbManager.RunHasResultSql("select * from worker");
SqlCacheDependencyAdmin.EnableNotifications(constr); //為Web應用程式啟用自動通知特性
SqlCacheDependencyAdmin.EnableTableForNotifications(constr, "worker");//設定資料庫中表的自動通知特性
SqlCacheDependency sqldep = new SqlCacheDependency("northwind", "worker"); //建立緩衝清空的依賴項為northwind中的worker表,以後只要worker表的資料的改變了緩衝就會清空
Cache.Insert("dt", dt,sqldep); //插入快取項目
Response.Write("從資料庫中取資料<br>");
}
else
{
dt = (DataTable)Cache["dt"];
Response.Write("從緩衝中去<br>");
}
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
Response.Write("結束取資料時間:" + DateTime.Now.ToLongTimeString() + "毫秒:" + DateTime.Now.Millisecond.ToString() + "<br>");
}
設定檔: web.config檔案
*********************************************************************************************
<configuration>
<appSettings/>
<connectionStrings>
<add name="constr" connectionString="server=.;database=northwind;uid=sa;pwd=" providerName="using System.Data.SqlClient"/>
</connectionStrings>
<system.web>
<caching>
<sqlCacheDependency enabled="true" pollTime="500"> //polltime是輪詢的時間,當緩衝中的資料在後台改變會過多長時間通知緩衝到期單位為毫秒,至少要>=500,此項一定不能少
<databases>
<add name="northwind" connectionStringName="constr"/>
</databases>
</sqlCacheDependency>
</caching>
*********************************************************************************************
Asp.net對應用程式的配置都放在Web.Config設定檔裡面,通過使用
Web.Config進行配置,可以增加程式的靈活性
1:如何利用Web.Config設定資料庫的連接字串
1)在<connectionStrings>節下面配置如下:
<connectionStrings>
<add name="constr" connectionString="server=.;database=test;uid=sa;pwd=123" providerName="System.Data.SqlClient">
</add>
</connectionStrings>
2)讀取配置的字串:
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
2:當應用程式發生錯誤時,自動定向到一個錯誤頁面
<customErrors mode="On" defaultRedirect="Error.aspx"/>
3:是否啟用調式:
<compilation debug="true"/>
在開發時,可以啟用,但是在發布時,一定要禁用
4:指定Asp.net檢證模式。四種檢驗模式
A)Windows檢證模式:
用戶端每次串連Web伺服器時,必須要輸入Web伺服器作業系統上windows
賬戶名,如此IIs才會認為你有許可權來訪問該Web伺服器上的網頁
(不能在本機上測試,由於本機在開機時已經登入過,也就是說已經通過的
window的身份檢驗)
好處:可以很好的和公司伺服器的賬戶整合,安全
壞處:任何一個使用者要瀏覽網頁,必須要建立一個帳號
結論:如果你的網站是供Internet來訪問的話,不能使用此檢證模式,那樣
會建立很多賬戶
B)Forms身分識別驗證(Internet身份檢驗)
用戶端每次串連Web伺服器的任何頁面時,Web伺服器會檢查是否通過Forms身份驗 證,如果沒有通過,則自動轉到使用者開發的登入表單中進行身份檢驗。一旦使用者
通過檢驗,則向用戶端添加一個Cookies,以後通過這個Cookies來進行身份的
檢驗。可以達到只需要登入一次,然後永遠信任的特點。以前的登入方式
只要知道了網頁名,直接在網址裡面輸入就可以了,非常不安全。
步驟:
<authentication mode="Forms">
<forms name="myauth" loginUrl="login.aspx"></forms>
</authentication>
<authorization>
<deny users="?"></deny> [拒絕沒有授權的賬戶]
</authorization>
在登入頁面裡面輸入以下代碼:
if (this.TextBox1.Text == "chen" && this.TextBox2.Text == "123")
{
FormsAuthentication.SetAuthCookie(this.TextBox1.Text, false); [寫入Cookies,用false和true來決定是永遠信任,還是僅本次登入信任]
if (FormsAuthentication.GetRedirectUrl(this.TextBox1.Text,false).EndsWith("default.aspx"))//如果是使用者直接開啟登入頁面,此時會自動返回default.aspx
{
Response.Redirect("index.aspx"); //就跳轉到首頁
}
else
{
FormsAuthentication.RedirectFromLoginPage(this.TextBox1.Text, false); //就跳轉到上一次出錯的頁面
}
}
舉例:
1)在同一個頁面裡面放入多個連結,有商品管理,客戶管理,產品管理,登入
只有當使用者登入過之後才通使用商品管理,客戶管理,產品管理模組,
否則無論點那個超連結都會自動到登入頁面中來
2)阻止使用者知道某個網頁的地址,直接輸入該網頁而運行網站
C)其它的Passport,與None要配置其它的伺服器,使用第三方軟體才能夠使用,很少使用。