Asp.Net知識点まとめ(五)
8653 ワード
ASP.NET高度な構成
Cacheキャッシュメカニズム
キャッシュのパラメータ:最初はキャッシュのプライマリ・キーです.2人目はキャッシュの値です.3つ目はキャッシュの依存項目です.4番目はキャッシュが除去された時間です.5つ目はキャッシュ時間の間隔です
一般キャッシュの設定
スライドキャッシュの設定
キャッシュ依存ファイル
データベースのキャッシュ
キャッシュ・データベースの構成
データベース・キャッシュ依存
Sサーバ名-E統合認証-ed起動-dデータベース名-etバッファ依存テーブル名-tテーブル名**を指定
vs 2010のコマンドプロンプトで実行(aspnet_regsql.exeが存在するディレクトリに切り替える)
キャッシュ依存データベースの無効化
web.configプロファイルは次のとおりです.
接続文字列の名前
セッション使用
1.プロセス内での使用
2.プロセス外使用
Webを構成します.configファイル:
リモートstateserver構成レジストリの場合
コマンド:cmd→regedit.exe HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection
3.データベース・サーバでの使用
グローバルファイルの使用
グローバルファイルの紹介:
同時に、パイプ内のイベントもここに登録できます.以下は、パイプ内の公開済みの19のイベントを要求します.
(1)BeginRequest:リクエストの処理開始
(2)AuthenticateRequest認証要求、ユーザ認証情報の取得
(3):PostAuthenticateRequest取得成功
(4):AunthorizeRequest権限、一般的にユーザーが権限を取得しているかどうかを確認します.
(5):PostAuthorizeRequest:ライセンス取得
(6):ResolveRequestCache:ページキャッシュ結果の取得
(7):PostResolveRequestCache取得キャッシュ現在要求マッピングMvcHandler(pr):コントローラファクトリの作成、コントローラの作成、action実行の呼び出し、view→responseaction Handler:PR()
(8):PostMapRequestHandlerページオブジェクトの作成:現在のhttpリクエストを最終的に処理するHandlerインスタンスの作成:現在のPR HandlerをHttpContextから取得し、Create
(9):PostAcquireRequestState取得Session
(10)PostAcquireRequestState取得Session
(11)PreRequestHandlerExecute:実行ページオブジェクトの準備
ページ・オブジェクトのProcessRequestメソッドの実行
(12)PostRequestHandlerExecute実行済みページオブジェクト
(13)ReleaseRequestState解放要求状態
(14)PostReleaseRequestStateが要求状態を解放した
(15)UpdateRequestCache更新キャッシュ
(16)PostUpdateRequestCacheがキャッシュを更新しました
(17)LogRequestログ記録
(18)PostLogRequest完了ログ
(19)EndRequest完了、
IHttpModuleインタフェースの使用:
このインタフェースには2つの方法DisposeとInitがあり、Initではパイプ内の19イベントを登録することもできます.
Webを構成します.configファイル:
システムでWebノードの下での構成
エラー・ページの構成:
Webでconfigファイルのsystem.Web構成:
例:
url書き換え原理
urlRewriter
1、ノードに参加する
3、に加入
データバインド:
1.Eval一方向バインド、計算式の値出力のみ
2.バインドされたデータをフォーマットしてからページに表示する
3.バインドされたデータを直接出力して何も処理しない
4.双方向バインディングは、式の値出力だけでなく、ユーザーが入力した値をデータに更新することもできます.
5.第2の方法の方法の再ロード:
6.eval 2つの値を同時にバインド
注意%と後の#にスペースやその他の記号は使用できません.
WebRequestクラスの使用:
Cacheキャッシュメカニズム
キャッシュのパラメータ:最初はキャッシュのプライマリ・キーです.2人目はキャッシュの値です.3つ目はキャッシュの依存項目です.4番目はキャッシュが除去された時間です.5つ目はキャッシュ時間の間隔です
一般キャッシュの設定
//this.Cache.Insert(“w”, DateTime.Now.ToLongTimeString(), null, DateTime.Now.AddSeconds(10), TimeSpan.Zero);
スライドキャッシュの設定
//this.Cache.Insert(“w”,DateTime.Now.ToLocalTime(),null,DateTime.MaxValue,new TimeSpan(0,0,5));
キャッシュ依存ファイル
//this.Cache.Insert(“w”, DateTime.Now.ToLocalTime(), new CacheDependency(Server.MapPath(“a.html”)));
データベースのキャッシュ
// this.Cache.Insert(“w”,DateTime.Now.ToLocalTime(),new SqlCacheDependency(“web.config ”,” ”));
キャッシュ・データベースの構成
データベース・キャッシュ依存
Sサーバ名-E統合認証-ed起動-dデータベース名-etバッファ依存テーブル名-tテーブル名**を指定
vs 2010のコマンドプロンプトで実行(aspnet_regsql.exeが存在するディレクトリに切り替える)
aspnet_regsql -S . -E -ed -d HKCorpData -et -t HKSJ_USERS
キャッシュ依存データベースの無効化
aspnet_regsql -S . -E -dd -d HKCorpData
web.configプロファイルは次のとおりです.
接続文字列の名前
/*
*/
セッション使用
/*stateServer */
1.プロセス内での使用
session[”key”]=”value”;
object obj=session[”key”];
2.プロセス外使用
Webを構成します.configファイル:
リモートstateserver構成レジストリの場合
コマンド:cmd→regedit.exe HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection
3.データベース・サーバでの使用
aspnet_regsql.exe -S 127.0.0.1 -U sa -P 123 -ssadd -sstype c -d SessionTest
グローバルファイルの使用
グローバルファイルの紹介:
// iis ,
protected void Application_Start(object sender, EventArgs e)
{
// , , :
Application[”isbackground”] = “bluk”;
// Application[”isbackground”]
//
Application[”number”] = 0;
}
//
protected void Session_Start(object sender, EventArgs e)
{
//
lock (Session[”Id”])
{
//
Session[”Id”] = (int)Session[”Id”] + 1;
//
Application[”number”] = (int)Application[”number”] + 1;
}
}
// iis ,
protected void Application_BeginRequest(object sender, EventArgs e)
{
// :
if (Request.RawUrl.Contains(“images/”))
{
if (Request.UrlReferrer == null || !IsSameDomain(Request.UrlReferrer, Request.Url))
{
Response.ContentType = “image/jpeg”;
string path = Request.MapPath(“~/daolian.jpg”);
Response.WriteFile(path);
//
Response.End();
}
}
}
//
public bool IsSameDomain(Uri u1, Uri u2)
{
return Uri.Compare(u1, u2, UriComponents.HostAndPort, UriFormat.SafeUnescaped, StringComparison.CurrentCultureIgnoreCase) == 0 ? true : false;
}
// , ,
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
//
//
HttpClientCertificate hr = new HttpClientCertificate();
hr= Context.Request.ClientCertificate;
//
string str= Request.UserHostAddress;
}
//
protected void Application_Error(object sender, EventArgs e)
{
//
Response.Redirect(Server.MapPath(“a.html”));
}
//
protected void Session_End(object sender, EventArgs e)
{
lock (Session[”Id”])
{
if ((int)Session[”Id”] > 0)
{
Session[”Id”] = (int)Session[”Id”] - 1;
}
}
}
//
protected void Application_End(object sender, EventArgs e)
{
//
//
File.WriteAllText(“log.txt”, Application[”number”].ToString());
}
同時に、パイプ内のイベントもここに登録できます.以下は、パイプ内の公開済みの19のイベントを要求します.
(1)BeginRequest:リクエストの処理開始
(2)AuthenticateRequest認証要求、ユーザ認証情報の取得
(3):PostAuthenticateRequest取得成功
(4):AunthorizeRequest権限、一般的にユーザーが権限を取得しているかどうかを確認します.
(5):PostAuthorizeRequest:ライセンス取得
(6):ResolveRequestCache:ページキャッシュ結果の取得
(7):PostResolveRequestCache取得キャッシュ現在要求マッピングMvcHandler(pr):コントローラファクトリの作成、コントローラの作成、action実行の呼び出し、view→responseaction Handler:PR()
(8):PostMapRequestHandlerページオブジェクトの作成:現在のhttpリクエストを最終的に処理するHandlerインスタンスの作成:現在のPR HandlerをHttpContextから取得し、Create
(9):PostAcquireRequestState取得Session
(10)PostAcquireRequestState取得Session
(11)PreRequestHandlerExecute:実行ページオブジェクトの準備
ページ・オブジェクトのProcessRequestメソッドの実行
(12)PostRequestHandlerExecute実行済みページオブジェクト
(13)ReleaseRequestState解放要求状態
(14)PostReleaseRequestStateが要求状態を解放した
(15)UpdateRequestCache更新キャッシュ
(16)PostUpdateRequestCacheがキャッシュを更新しました
(17)LogRequestログ記録
(18)PostLogRequest完了ログ
(19)EndRequest完了、
IHttpModuleインタフェースの使用:
このインタフェースには2つの方法DisposeとInitがあり、Initではパイプ内の19イベントを登録することもできます.
Webを構成します.configファイル:
システムでWebノードの下での構成
//
public void Dispose()
{}
///
/// ,
///
///
public void Init(HttpApplication context)
{
// :
//
context.BeginRequest += new EventHandler(context_BeginRequest);
}
///
///
///
///
///
private void context_BeginRequest(object sender, EventArgs e)
{
// sender
HttpApplication application = sender as HttpApplication;
application.Context.Response.Write(“ IHttpModle ”);
}
エラー・ページの構成:
Webでconfigファイルのsystem.Web構成:
例:
url書き換え原理
void Application_BeginRequest(object sender, EventArgs e)
{
//url
HttpApplication app = sender as HttpApplication;
string url = app.Request.RawUrl;
/
Regex r = new Regex(“/(\\d+)/details\\.htm",RegexOptions.IgnoreCase);
Match m = r.Match(url);
if (m.Success)
{
string id = m.Groups[1].Value;
app.Context.RewritePath(“~/PhotoDetails.aspx?id=” + id);
}
}
urlRewriter
1、ノードに参加する
2、在之后加入
~/(\d{4})/(\d{2})/Default\.aspx
~/Default.aspx?ID=$1
3、に加入
データバインド:
1.Eval一方向バインド、計算式の値出力のみ
2.バインドされたデータをフォーマットしてからページに表示する
3.バインドされたデータを直接出力して何も処理しない
4.双方向バインディングは、式の値出力だけでなく、ユーザーが入力した値をデータに更新することもできます.
5.第2の方法の方法の再ロード:
’>
6.eval 2つの値を同時にバインド
’>
注意%と後の#にスペースやその他の記号は使用できません.
WebRequestクラスの使用:
PageUrl = “http://xj8c.cc “; //
WebRequest request = WebRequest.Create(PageUrl); //WebRequest.Create , WebRequest HttpWebRequest
WebResponse response = request.GetResponse(); //WebRequest.GetResponse , Internet
Stream resStream = response.GetResponseStream(); //WebResponse.GetResponseStream , Internet 。
Encoding enc = Encoding.GetEncoding(“GB2312”); // utf-8 / GB2312
StreamReader sr = new StreamReader(resStream, enc); // :System.IO。 StreamReader TextReader (TextReader , ), 。
ContentHtml.Text = sr.ReadToEnd(); // (HTML ),ContentHtml Multiline TextBox
resStream.Close();
sr.Close();