Buffer | |
Boolean = Response.Buffer | |
サーバーにバッファリングされた出力を要求が完全に処理されたときに送信する、あるいは Response.Flush メソッドまたは Response.End メソッドのいずれかが呼び出されたときに送信するかを示すブール値を返すかまたは設定します。初期設定値は True です。 |
|
パラメータ | |
|
|
メモ | |
このプロパティは、従来の ASP との下位互換性を保つために提供されています。通常は、このプロパティの代わりに BufferOutput プロパティを使用します。新たに ASP.NET コードを記述する場合は、Buffer の代わりに BufferOutput を使用してください。 |
|
従来の ASP の Response.Buffer プロパティが、ASP.NET の Buffer プロパティや BufferOutput プロパティと大きく異なるのは、従来の ASP では出力がブラウザに送信された後で Buffer プロパティを変更すると必然的にエラーが発生する点です。ASP.NET はインタープリタ型ではなくコンパイル型なので、Buffer プロパティまたは BufferOutput プロパティをいつでも変更できます。また、変更内容は、バッファリング方法にのみ反映されます。これにより、デベロッパーはより柔軟に出力のバッファリング方法とタイミングを設定できます。実際のコード例については、BufferOutput の例を参照してください。 |
|
BufferOutput | |
Boolean = Response.BufferOutput | |
サーバーにバッファリングされた出力を要求が完全に処理されたときに送信する、あるいは Response.Flush メソッドまたは Response.End メソッドのいずれかが呼び出されたときに送信するかを示すブール値を返すかまたは設定します。初期設定値は True です。 |
|
パラメータ | |
|
|
例 | |
次の例では、BufferOutput プロパティを False に設定して 50 回ループを実行し、ループを反復するたびに HTTP 出力にピリオドを書き込みます。また、Message という Label コントロールの Text プロパティにも同じ出力を書き込みます。最初の 10 回と最後の 21 回の繰り返しは、BufferOutput を False に設定し、11 回目から 29 回目までは True に設定します。 |
|
Sub Page_Load( ) Response.BufferOutput = False Dim i As Integer For i = 1 To 50 If (i > 10 And i < 30) Then Response.BufferOutput = True Else Response.BufferOutput = False End If System.Threading.Thread.Sleep(500) Response.Write(".") Message.Text &= "." 'Response.Flush Next Response.Write("<br/>Done!<br/>") Message.Text &= "<br/>Done!<br/>" End Sub |
|
コードの出力は、次のようになります。 |
|
.................................................. Done!.................................................. Done! |
|
最初の行には、ピリオドが 1 個ずつ 10 個まで表示され、一時停止します。次に 20 個のピリオドが表示され、その後残りのピリオドが 1 個ずつ表示され、最後に "Done!" ステートメントが表示されます。同一の出力が、ASP.NET の Label コントロールにより HTML <span> として生成されます。ただし、サーバー上のコントロールの出力は、Label コントロールが表示されてからクライアントに送信されるので一度に表示されます。つまり前述の例では、各ループを実行するたびにコントロールのプロパティにコードが単純に追加され、後で一度に表示されます。一方、Response.Write を呼び出してテキストを送信する場合、バッファリングが無効になった直後にブラウザにテキストが送信されます。 |
|
前述の例の Response.BufferOutput 行を先頭に引用符 (') を付けることでコメントアウトし、Response.Flush 行をコメントアウトしない場合も、同様の動作になります。このようにコメントを設定すると、既に説明した出力の一時停止は行われません。 |
|
静的な Thread.Sleep 共有メソッドを呼び出すと、指定したミリ秒単位で ASP.NET 要求の処理を一時停止できます。これは、何らかの理由で処理中に待機する必要がある場合に役立ちます。ただし、このメソッドを使用すると各要求の合計処理時間に影響が及びます。高いスケーラビリティを必要とするアプリケーションでは、要求の処理に使用できるスレッドの数が制限されているため、このメソッドを使用すると、アプリケーションのスループット全体に悪影響を与える可能性があります。 |
|
Thread.Sleep を呼び出すときに名前空間名を明示的に指定しないようにするには、ページの @ Page 宣言の直後に次の行を追加します。 |
|
<%@ Import Namespace="System.Threading" %> |
|
メモ | |
ASP.NET の BufferOutput プロパティは従来の ASP の Buffer プロパティと等価であり、新規の開発の場合は、Buffer ではなく BufferOutput プロパティを使用します。 |
|
Cache | ||||||||||||||
HttpCachePolicy = Response.Cache | ||||||||||||||
ページのキャッシュポリシーを保持する HttpCachePolicy クラスのインスタンスを返します。HttpCachePolicy クラスのインスタンスとこのクラスよって公開されるメソッドを使用すると、出力キャッシュまたは現在のキャッシュ設定を変更するよう設定されたヘッダまたはパラメータ (存在する場合) を調べることができます。HttpCachePolicy クラスのメンバーは、次のとおりです。 |
||||||||||||||
|
||||||||||||||
パラメータ | ||||||||||||||
|
||||||||||||||
例 | ||||||||||||||
次の例では、HttpCachePolicy クラスのインスタンスをローカル変数に渡し、有効期限の時刻をページが処理された 2 分後に設定し、ページのキャッシュ機能を Public に設定します。最後に、Message Label コントロールの Text プロパティを現在時刻に設定します。 |
||||||||||||||
Sub Page_Load( ) Dim myCachePol As HttpCachePolicy myCachePol = Response.Cache myCachePol.SetExpires(DateTime.Now.AddSeconds(120)) myCachePol.SetCacheability(HttpCacheability.Public) Message.Text = Now.ToString( ) End Sub |
||||||||||||||
ページの出力は、現在の日時になります。更新された場合、2 分経過するまで出力は変更されません。 |
||||||||||||||
メモ | ||||||||||||||
ASP.NET で特定のページのキャッシュポリシーを変更するには、このプロパティから渡される HttpCachePolicy オブジェクトを使用する方法が適しています。HttpCachePolicy の機能は、従来の ASP の CacheControl、Expires、および ExpiresAbsolute の各プロパティが提供した機能と同じです。たとえば、HttpCachePolicy クラスを使用すると、指定した応答がサーバーにキャッシュされないよう明示的に設定することができ、その上で応答のダウンストリームキャッシュも実行できます。 |
||||||||||||||
@ OutputCache ディレクティブとその属性を使用してページの出力キャッシポリシーを設定することもできます。ただし、HttpCachePolicy クラスのメソッドを使用する方がきめ細やかな制御が可能です。@ OutputCache ディレクティブを使用したキャッシュの詳細については、第 3 章を参照してください。 |
||||||||||||||
CacheControl | |
Response.CacheControl = String | |
現在のページのキャッシュ機能を設定します。 |
|
パラメータ | |
|
|
例 | |
Sub Page_Load( ) Response.CacheControl = "Public" Response.Expires = 2 Message.Text = Now.ToString( ) End Sub |
|
前述のコードの出力結果は、前の例と同じです。 |
|
メモ | |
このプロパティに代わり、HttpCacheability クラスのメソッドが使用されています。 |
|
Charset | |
String = Response.Charset | |
現在の応答の文字セットを表す文字列を返すか、または設定します。明示的に設定した場合、Charset プロパティに代入された値は Content-Type HTTP 応答ヘッダに追加されます。 |
|
パラメータ | |
|
|
例 | |
次の例では、HTTP 応答の文字セットを Windows-1255 に設定します。次に、Message Label コントロールの Text プロパティに文字セットの値を書き込みます。名前から分かるように、この文字セットは Windows クライアント上の Internet Explorer でのみ使用可能です。Internet Explorer 以外のブラウザ、または Windows 以外のオペレーティングシステム上のブラウザでは、ページが正常に表示されない場合があります。この Windows-1255 文字セットとデフォルトの UTF-8 文字セットの相違点を確認するには、Internet Explorer にページを読み込み、Charset プロパティを設定した行をコメントアウトします。次にページを保存し、ブラウザにページを再度読み込みます。 |
|
Sub Page_Load( ) Response.Charset = "Windows-1255" Message.Text = "Current character set is " & Response.Charset End Sub |
|
メモ | |
HTTP ヘッダをブラウザに送信した後でこのプロパティを変更しようとすると、HttpException がスローされます。この例外が発生する最も一般的なケースが、BufferOutput プロパティを使用して出力バッファを無効にし、Response.Write を使用してブラウザにコンテンツを書き込んだ場合です。 |
|
Charset プロパティで指定した文字セットがクライアントの使用するブラウザで無効である場合、その文字セットは無視され、代わりにブラウザのデフォルトの文字セットが使用されます。ただし既に説明したように、ブラウザのデフォルトの文字セットを使用すると、ページが意図したとおりに表示されない可能性があります。 |
|
ContentEncoding | |
Encoding = Response.ContentEncoding | |
現在の応答のエンコードを表す Encoding クラスのインスタンスを返します。Encoding クラスは、システム内部における文字の格納状態など、システムの文字エンコードを調べたり変更するプロパティとメソッドを公開します。このクラスを使用すると、たとえば、Unicode 文字列を ASCII、UTF-7、または UTF-8 に変換できます。 |
|
パラメータ | |
|
|
例 | |
次の例では、ContentEncoding プロパティによって返された Encoding クラスのインスタンスのプロパティを使用して、現在のエンコードに付けられた人間が判読できる名前と登録名 (IANA) を表示します。 |
|
Sub Page_Load( ) Message.Text = "Current encoding is " & _ Response.ContentEncoding.EncodingName & "<br/>" Message.Text &= "Current encoding IANA name is " & _ Response.ContentEncoding.WebName & "<br/>" End Sub |
|
メモ | |
ContentEncoding は ASP.NET の新しいプロパティです。このプロパティは、現在の応答の文字セットとコードページ情報を参照および変更するための多機能なインターフェイスを提供します。また、Unicode から ANSI へなどのように、ある文字セットでエンコードされた文字列を他の文字エンコードに変換できるプロパティは、このプロパティのみです。 |
|
ContentType | |
String = Response.ContentType | |
現在の応答の MIME タイプを保持する文字列を返すか、または設定します。これにより、Content-Type HTTP 応答ヘッダの値を受け取るか、または設定できます。 |
|
パラメータ | |
|
|
例 | |
次の例では、クライアントのブラウザに現在のコンテンツの MIME タイプを表示します。 |
|
Sub Page_Load( ) Message.Text = "Current content type is " & _ Response.ContentType & "<br/>" End Sub |
|
メモ | |
ContentType プロパティが非常に重要であるのは、デフォルトの HTML 以外のコンテンツをクライアントのブラウザに送信できるためです。たとえば、Response.BinaryWrite メソッドを使用してバイナリのイメージデータをクライアントのブラウザに送信する場合は、ContentType プロパティを "image/jpg" や "image/gif" などの適切な MIME タイプに設定する必要があります。設定方法の詳細については、BinaryWrite の例を参照してください。 |
|
Expires | |
Integer = Response.Expires | |
キャッシュされたページの有効期限が切れるまでの時間を分単位で表す整数値を返すか、または設定します。このプロパティを CacheControl プロパティと併用して、応答のキャッシュを制御できます。 |
|
パラメータ | |
|
|
メモ | |
このプロパティは、従来の ASP との下位互換性を保つために提供されています。通常は、このプロパティに代わり、Cache プロパティによって返される HttpCachePolicy インスタンスのメソッドを使用します。 |
|
ExpiresAbsolute | |
DateTime = Response.Expires | |
キャッシュされた応答の有効期限が切れる日時を示す DateTime 値を返すか、または設定します。 |
|
パラメータ | |
|
|
例 | |
次の例では、CacheControl プロパティを使用して現在の応答のキャッシュを有効に設定し、有効期限の絶対時刻を現在時刻から 30 秒後に設定します。 |
|
Sub Page_Load( ) Response.CacheControl = "Public" Response.ExpiresAbsolute = DateTime.Now.AddSeconds(30) Message.Text = Now.ToString( ) End Sub |
|
メモ | |
このプロパティは、従来の ASP との下位互換性を保つために提供されています。通常は、このプロパティに代わり、Cache プロパティによって返される HttpCachePolicy インスタンスのメソッドを使用します。 |
|
IsClientConnected | |
Boolean = Response.IsClientConnected | |
クライアントが接続されているかどうかを示すブール値を返します。クライアントが既に切断されている場合は False を返します。 |
|
パラメータ | |
|
|
例 | |
次の例では、処理時間の長い作業を実行する前に IsClientConnected プロパティをチェックし、クライアントが接続されていない場合にタスクを実行する無駄を省きます。False が返された場合、Response.End メソッドが呼び出されます。クライアントが切断されていて、End メソッドを呼び出すときに送信されるバッファからの出力を受信できない場合でも、End メソッドの使用は有用です。これは、End メソッドを呼び出すと、ページの処理が停止され、Application_EndRequest イベントが発生するためです。Application_EndRequest のイベントハンドラーによって実行されるクリーンアップコードがページに記述されていれば、クライアントが切断されている場合にも Response.End を呼び出すとクリーンアップコードが確実に実行されます。 |
|
Sub Page_Load( ) 'Check client connection status If Response.IsClientConnected = False Then Response.End Else 'Start long-running processing task End If End Sub |
|
メモ | |
IsClientConnected プロパティは、サーバー上のリソースを大量に消費する長時間のプロセスを実行する場合に特に役立ちます。IsClientConnected プロパティに対するクエリーを、リソースを占有する処理作業を開始する前か、または処理実行中に定期的に行うことにより、何らかの原因でクライアントが切断された場合にそれ以降の処理を回避できます。 |
|
Output | ||||||||||||
TextWriter = Response.Output | ||||||||||||
現在の応答の出力ストリームにテキストを直接書き込むために使用する、書き込み専用の TextWriter オブジェクトを返します。 |
||||||||||||
パラメータ | ||||||||||||
|
||||||||||||
|
||||||||||||
例 | ||||||||||||
次の例では、TextWriter 型のローカル変数を宣言し、Output プロパティから TextWriter のインスタンスを取得します。次に WriteLine メソッドを使用して "Hello, World!" というテキストを出力ストリームに書き込みます。WriteLine メソッドは、指定したテキストまたは非文字列データのテキスト表現に行終端文字列を付加して書き込みます。行終端文字列は、TextWriter の NewLine プロパティを設定して指定します。NewLine プロパティを設定しない場合は、行終端文字列がブラウザに送信されるテキストの形式に影響します。ただし、通常、ブラウザは HTML を表示するときに HTML 以外の行終端文字などの空白を無視するので、ブラウザによって表示される出力の形式は変更されません。 |
||||||||||||
Sub Page_Load( ) Dim myWriter As System.IO.TextWriter myWriter = Response.Output myWriter.NewLine = "<br/>" myWriter.WriteLine("Hello, World!") myWriter.WriteLine("Hello, World, once again!") End Sub |
||||||||||||
メモ | ||||||||||||
出力ストリームにテキストを出力する場合、Response.Write メソッドの代わりに Output プロパティを使用できます。また、Output プロパティから取得した TextWriter のインスタンスをカスタムコンポーネントのメソッドに渡すこともできます。これにより、カスタムコンポーネントが現在の応答に対する出力ストリームにテキストを直接書き込むことができます。 |
||||||||||||
Output プロパティから取得した TextWriter を使用して出力ストリームにテキストを書き込む場合、Response.Write メソッドと同様に、出力結果はテキストを書き込むコードの場所によって異なります。たとえば、前述のコード例では、"Hello, World!" というテキストはページ出力の静的 HTML より先に表示されます。これは、この例では、ページのコントロールが表示される前に TextWriter と Response.Write メソッドの出力が処理されるためです。TextWriter のインスタンスまたは Response.Write の出力をインライン表示するには、出力を表示する場所の <% %> 表示ブロックに前述のコードを記述します。ASP.NET で正確に出力場所を指定するには、ファイル内の出力を表示する位置に ASP.NET の Literal サーバーコントロールを追加し、出力テキストを Literal コントロールの Text プロパティに渡します。 |
||||||||||||
変数宣言に System.IO 名前空間を明示的に追加せずに TextWriter クラスを使用するには、次のように @ Import ディレクティブを @ Page ディレクティブの直後に追加し、Namespace 属性を System.IO に設定します。 |
||||||||||||
<% @ Import Namespace="System.IO" %> |
||||||||||||
OutputStream | ||||||||||||
Stream = Response.OutputStream | ||||||||||||
現在の要求の出力ストリームにバイナリコンテンツを直接書き込むために使用する、書き込み専用の Stream オブジェクトを返します。 |
||||||||||||
パラメータ | ||||||||||||
Stream クラスのメンバーは、次のとおりです。 |
||||||||||||
|
||||||||||||
メモ | ||||||||||||
出力ストリームにバイナリコンテンツを出力する場合、Response.BinaryWrite メソッドの代わりに OutputStream プロパティを使用できます。また、OutputStream プロパティから取得した Stream インスタンスをカスタムコンポーネントのメソッドに渡すこともできます。これにより、カスタムコンポーネントが現在の応答に対する出力ストリームにバイナリコンテンツを直接書き込むことができます。 |
||||||||||||
Status | |
String = Response.Status | |
クライアントのブラウザに送信される HTTP ステータス行を保持する文字列を返すか、または設定します。 |
|
パラメータ | |
|
|
メモ | |
このプロパティは、従来の ASP との下位互換性を保つために提供されています。ASP.NET ではこのプロパティに代わり、StatusDescription プロパティを使用します。StatusCode プロパティと StatusDescription プロパティを使用すると、Status プロパティとは異なり、ステータス行のステータスを表す部分の数値コードとテキスト記述とを個別に制御できます。 |
|
StatusCode | |
Integer = Response.StatusCode | |
ブラウザに渡される HTTP ステータスコードを表す整数値を返すか、または設定します。 |
|
パラメータ | |
|
|
例 | |
次の例では、StatusCode プロパティと StatusDescription プロパティを使用して HTTP ステータスメッセージをクライアントに送信します。Response.End メソッドは、処理を停止し、その時点でバッファリングされている出力をクライアントに送信します。 |
|
Sub Page_Load( ) Response.StatusCode = 542 Response.StatusDescription = "Server Error - The code is the answer." Response.End( ) End Sub |
|
メモ | |
バッファリングが無効になっている場合、Response.Write または類似のメソッドによって HTTP 本文の出力をクライアントにいったん送信すると、このプロパティを設定できなくなります。これは、HTTP 応答ヘッダを設定するその他のプロパティと同様です。 |
|
StatusDescription | |
String = Response.StatusDescription | |
HTTP ステータスのテキストメッセージを保持する文字列を返すか、または設定します。この文字列は、StatusCode プロパティに格納されたステータスコードと共にブラウザに送信されます。 |
|
パラメータ | |
|
|
例 | |
StatusCode プロパティのコード例を参照してください。 |
|
メモ | |
バッファリングが無効になっている場合、Response.Write または類似のメソッドによって HTTP 本文の出力をクライアントにいったん送信すると、このプロパティを設定できなくなります。これは、HTTP 応答ヘッダを設定するその他のプロパティと同様です。 |
|
SuppressContent | |
Boolean = Response.SuppressContent | |
HTTP 出力をクライアントに送信するかどうかを示すブール値を返すか、または設定します。 |
|
パラメータ | |
|
|
例 | |
次の例では、デフォルトでバッファリングされている出力に "Hello, World!" というテキストを書き込みます。次に、SuppressContent を True に設定し、クライアントに出力が送信されないようにします。 |
|
Sub Page_Load( ) Response.Write("Hello, World!") Response.SuppressContent = True If Response.SuppressContent Then Response.Close( ) End Sub |
|
メモ | |
SuppressContent を使用すると、エラーメッセージを含むすべての出力がクライアントに返されなくなります。このため、クライアントのブラウザがハングしたままの状態にならないよう、クライアントとのネットワーク接続を閉じる Response.Close メソッドを呼び出す必要があります。 |
|
Cookies | |
HttpCookieCollection = Response.Cookies | |
Cookies コレクションは、HttpCookieCollection クラスのインスタンスを返します。このインスタンスには、現在の要求の一部として送信されたすべての Cookie が含まれています。HttpCookieCollection クラスは、クライアント要求の一部として渡された各 Cookie の HttpCookie クラスのインスタンスを保持します。これらの HttpCookie インスタンスのプロパティを使用すると、Cookie に関する情報にアクセスできます。Response クラスの Cookies コレクションは、次のプロパティセットをサポートします。 |
|
|
|
さらに、HttpCookieCollection クラスは、次のメソッドを公開します。 |
|
|
|
従来の ASP と同様に、Cookies コレクションは 1 つのコレクションとして実装されます。実際に、HttpCookieCollection クラスは .NET NameObjectCollectionBase クラスから継承します。ただし、ASP.NET の実装は文字列キーと文字列値のコレクションではなく、文字列キーとオブジェクト (HttpCookie クラスのインスタンス) のコレクションです。個々の Cookie は HttpCookie 型の変数に渡され、クラスのプロパティを経由して、Cookie の値へのアクセスが提供されます。 |
|
複数の値を持つディクショナリ形式の Cookie は、HttpCookie クラスの Values プロパティを介してアクセスできます。このクラスは、Cookie のサブキーと値を保持する NameValueCollection を返します。また、次の構文を使用して、このようなキーによって個々の値を設定することもできます。 |
|
HttpCookie.Values("keyname") = "value" |
|
パラメータ | |
|
|
例 | |
次の例では、ログイン Cookie を作成し、有効期限を現在時刻から 30 分後に設定し、Cookies コレクションに Cookie を追加します。 |
|
Sub Page_Load( ) Dim myCookie As New HttpCookie("LoggedIn") myCookie.Value = "True" myCookie.Expires = DateTime.Now.AddMinutes(30) Response.Cookies.Add(myCookie) End Sub |
|
メモ | |
従来の ASP とは異なり、ASP.NET のコレクションはゼロ (0) から始まるので、すべてのコレクションや配列の最初の要素は 1 ではなく 0 になります。このことは、インデックスにより値を取得する際に覚えておく必要のある重要な点です。 |
|
AddCacheItemDependencies | |
Response.AddCacheItemDependencies(ByVal cacheKeys As ArrayList) | |
配列リストに格納されたキャッシュキーの一覧を、現在の応答の出力キャッシュが依存しているキャッシュ項目のキー一覧に追加します。キーによって識別されるキャッシュ項目が 1 つでも変更されると、現在の応答の出力キャッシュは無効になり、新しい応答が生成されます。 |
|
パラメータ | |
|
|
例 | |
次の例では、AddCacheItemDependencies メソッドを使用して現在の応答の出力キャッシュと依存関係にある複数のキャッシュキーを設定する方法を示します。これらのキーにより表されるキャッシュ項目が 1 つでも変更された場合、出力キャッシュは無効になり、Response.Redirect を使用してページが更新されます。 |
|
<%@ Page Language="vb" %> <%@ OutputCache Duration="300" VaryByParam="None" %> <html> <head> <title>Adding cache dependencies in ASP.NET</title> <script runat="server"> Sub Page_Load( ) Dim myArrayList As New ArrayList myArrayList.Add("Key1") myArrayList.Add("Key2") Response.AddCacheItemDependencies(myArrayList) Message.Text = DateTime.Now.ToString( ) End Sub Sub Button1_Click(sender As Object, e As EventArgs) Cache("Key1") = "foo" & DateTime.Now.ToString( ) Response.Redirect("AddCacheItemDependencies.aspx") End Sub Sub Button2_Click(sender As Object, e As EventArgs) Cache("Key2") = "bar" & DateTime.Now.ToString( ) Response.Redirect("AddCacheItemDependencies.aspx") End Sub </script> </head> <body> <form runat="server"> <asp:label id="Message" runat="server"/> <asp:button id="Button1" text="Change Key 1" onClick="Button1_Click" runat="server"/> <asp:button id="Button2" text="Change Key 2" onClick="Button2_Click" runat="server"/> </form> </body> </html> |
|
メモ | |
AddCacheItemDependencies メソッドはページのキャッシュ出力の際に役立ちますが、そのページは ASP.NET キャッシュに保存されている複数の項目の値に依存します。データを最新に保つためにページを短期間キャッシュするのではなく、AddCacheItemDependencies を使用して、依存関係の変更に伴って出力キャッシュを自動的に無効にすることができます。 |
|
AddCacheItemDependency | |
Response.AddCacheItemDependency(ByVal cacheKey As String) | |
キャッシュ項目のキーを、現在の応答の出力キャッシュが依存しているキャッシュキーの一覧に追加します。キーによって識別されるキャッシュ項目が変更されると、現在の応答の出力キャッシュは無効になり、新しい応答が生成されます。 |
|
パラメータ | |
|
|
例 | |
次の例では、AddCacheItemDependency メソッドを使用して、現在の応答の出力キャッシュと依存関係にあるキャッシュキーを 1 つ設定する方法を示します。このキーにより表されるキャッシュ項目が変更された場合、出力キャッシュは無効になり、Response.Redirect を使用してページが更新されます。 |
|
<%@ Page Language="vb" %> <%@ OutputCache Duration="300" VaryByParam="None" %> <html> <head> <title>Adding a cache dependency in ASP.NET</title> <script runat="server"> Sub Page_Load( ) Response.AddCacheItemDependency("Key1") Message.Text = DateTime.Now.ToString( ) End Sub Sub Button1_Click(sender As Object, e As EventArgs) Cache("Key1") = "foo" & DateTime.Now.ToString( ) Response.Redirect("AddCacheItemDependency.aspx") End Sub </script> </head> <body> <form runat="server"> <asp:label id="Message" runat="server"/> <asp:button id="Button1" text="Change Key 1" onClick="Button1_ Click" runat="server"/> </form> </body> </html> |
|
メモ | |
AddCacheItemDependency メソッドは AddCacheItemDependencies メソッドと機能が同じですが、対象となるキャッシュ項目の数が複数ではなく 1 つである点が異なります。 |
|
AddFileDependencies | |
Response.AddFileDependencies(ByVal filenames As ArrayList) | |
配列リストに格納されたファイルの一覧を、現在の応答の出力キャッシュが依存しているファイルの一覧に追加します。ファイルが 1 つでも変更された場合、出力キャッシュは無効になります。 |
|
パラメータ | |
|
|
例 | |
次の例では、AddFileDependencies メソッドを使用して、現在の応答の出力キャッシュと依存関係にある複数のファイルを設定します。ファイルが 1 つでも変更された場合、出力キャッシュは無効になります。 |
|
<%@ Page Language="vb" %> <%@ OutputCache Duration="300" VaryByParam="None" %> <html> <head> <title>Adding file dependencies in ASP.NET</title> <script runat="server"> Sub Page_Load( ) Dim myArrayList As New ArrayList myArrayList.Add(Server.MapPath("dep.txt")) myArrayList.Add(Server.MapPath("dep1.txt")) Response.AddFileDependencies(myArrayList) Message.Text = DateTime.Now.ToString( ) End Sub </script> </head> <body> <asp:label id="Message" runat="server"/> </body> </html> |
|
メモ | |
AddFileDependencies メソッドはページのキャッシュ出力の際に役立ちますが、そのページは Web サーバーからのファイルパスを使用してアクセスできる複数のファイルの値に依存します。データを最新に保つためにページを短期間キャッシュするのではなく、AddFileDependencies を使用して、依存関係の変更に伴って出力キャッシュを自動的に無効にすることができます。 |
|
AddFileDependency | |
Response.AddFileDependency(ByVal filename As String) | |
現在の要求の出力キャッシュが依存しているファイルの一覧にファイルを追加します。filename パラメータにより指定されたファイルが変更されると、出力キャッシュは無効になります。 |
|
パラメータ | |
|
|
例 | |
次の例では、AddFileDependency メソッドを使用して、現在の応答の出力キャッシュと依存関係にあるファイルを 1 つ設定する方法を示します。ファイルが変更された場合、出力キャッシュは無効になります。 |
|
<%@ Page Language="vb" %> <%@ OutputCache Duration="300" VaryByParam="None" %> <html> <head> <title>Adding a file dependency in ASP.NET</title> <script runat="server"> Sub Page_Load( ) Response.AddFileDependency(Server.MapPath("dep.txt")) Message.Text = DateTime.Now.ToString( ) End Sub </script> </head> <body> <asp:label id="Message" runat="server"/> </body> </html> |
|
前述のコード例の "dep.txt" ファイルは、ページと同じディレクトリに保存されます。ページのコンテンツは任意の場所に保存できます。ファイルのコンテンツが変更された場合、キャッシュは無効になります。 |
|
メモ | |
AddFileDependency メソッドは AddFileDependencies メソッドと機能が同じですが、対象となるファイルの数が複数ではなく 1 つである点が異なります。 |
|
AddHeader | |
Response.AddHeader(ByVal name As String, ByVal value As String) | |
指定した名前と値が割り当てられている HTTP ヘッダを出力ストリームに追加します。 |
|
パラメータ | |
|
|
メモ | |
AddHeader プロパティは、従来の ASP との下位互換性を保つために提供されています。このプロパティに代わり、新たに AppendHeader メソッドが使用されています。 |
|
AppendHeader | |
Response.AppendHeader(ByVal name As String, _ ByVal value As String) | |
指定した名前と値が割り当てられている HTTP ヘッダを出力ストリームに追加します。このメソッドを使用して、カスタムの HTTP ヘッダの追加、または標準の HTTP ヘッダの値の変更を行うことができます。 |
|
パラメータ | |
|
|
例 | |
次の例では、Content-Type HTTP ヘッダを "text/xml" に設定し、Message Label コントロールの Text プロパティを ContentType プロパティの値に設定することで新しい値を表示します。その結果、ページ出力は XML として処理されます。 |
|
Sub Page_Load( ) Response.AppendHeader("Content-Type", "text/xml") Message.Text = Response.ContentType End Sub |
|
メモ | |
キャッシュポリシーに関連付けられた HTTP ヘッダと共にこのメソッドを使用すると、より制限的な設定が ASP.NET のキャッシュ API の使用により適用されている場合、AppendHeader によって適用した設定ではなくその設定が使用されます。 |
|
AppendToLog | |
Response.AppendToLog(ByVal param As String) | |
param パラメータで指定されたテキストを現在の IIS アプリケーションの IIS ログファイルに追加します。 |
|
パラメータ | |
|
|
例 | |
次の例では、ページの一部を構成するアプリケーションの IIS ログにメッセージを書き込みます。次に、Message という ASP.NET の Label コントロールに、メッセージが書き込まれたことを示すメッセージを書き込みます。 |
|
Sub Page_Load( ) Response.AppendToLog("Hello from Page_Load!") Message.Text = "Message written to IIS Log!" End Sub |
|
前述の例で生成した IIS ログエントリは、次のようになります。 |
|
2001-10-14 00:13:14 127.0.0.1 - 127.0.0.1 80 GET /ASPdotNET_iaN/Chapter_17/AppendToLog.aspx
Hello+from+Page_Load! 200 BrowserString
|
|
メモ | |
従来の ASP の AppendToLog メソッドは、1 回の呼び出しで書き込める長さが 80 文字に制限されていました。ASP.NET の AppendToLog を使用すると、任意の長さのテキストをログに書き込むことができます。IIS ログファイルのデフォルトの場所は、%windir%\System32\LogFiles\W3SVCx\exdate.log です。ここで、%windir% は Windows ディレクトリ名、x はログ (指定したアプリケーションの IIS メタベース名) で管理される Web サイトの番号、date はログファイルの作成日を示します。 |
|
ApplyAppPathModifier | |
String = Response.ApplyAppPathModifier(ByVal virtualPath_ As String) | |
リソースへの仮想パスを受け取り、SessionID が含まれた新しい仮想パスを保持する文字列を返します。この新しい仮想パスを使用すると、Cookie を持たないセッションを使用するアプリケーション用に絶対 URL を作成できます。 |
|
パラメータ | |
|
|
例 | |
次の例では、SessionID を含む仮想パスを取得し、Message Label コントロールの Text プロパティを使用してパスを表示します。 |
|
Sub Page_Load( ) Dim NewPath As String NewPath = Response.ApplyAppPathModifier(Request.Path) Message.Text = "Modified virtual path = " & NewPath End Sub |
|
Cookie を持たないセッションを使用するように Session 状態ハンドラーを設定する "web.config" ファイルの内容は、次のようになります。 |
|
<configuration> <system.web> <sessionState mode="InProc" cookieless="true"/> </system.web> </configuration> |
|
メモ | |
このメソッドは、ASP.NET に導入された、Cookie を持たないセッション状態の機能を使用する場合に役立ちます。"web.config" の sessionState 構成セクションの cookieless 属性が True に設定されていない場合、このメソッドは渡された仮想パスをそのまま返します。 |
|
BinaryWrite | |
Response.BinaryWrite(ByVal buffer( ) As Byte) | |
出力ストリームにバイナリコンテンツを書き込むことができます。クライアントにバイナリコンテンツを送信する前に出力が変更されることはありません。 |
|
パラメータ | |
|
|
例 | |
BinaryWrite の例を次に示します。 |
|
Sub Page_Load( ) Dim ImageStream As New FileStream(MapPath("aspnetian.jpg"), _ FileMode.Open, FileAccess.Read) Dim ImageBytes(ImageStream.Length) As Byte ImageStream.Read(ImageBytes, 0, ImageStream.Length) ImageStream.Close( ) Response.ContentType = "image/bmp" Response.BinaryWrite(ImageBytes) Response.End( ) End Sub |
|
メモ | |
このメソッドは、データベースから取得したバイナリコンテンツをブラウザに書き込む場合に特に役立ちます。イメージまたはテキスト以外のその他のデータをブラウザに書き込む場合、Response.ContentType プロパティを、"image/jpg" などの送信するイメージに適した MIME タイプに設定する必要があります。 |
|
Clear | |
Response.Clear( ) | |
現在の出力ストリームのコンテンツをクリアします。 |
|
パラメータ | |
なし |
|
メモ | |
Clear メソッドは、現在バッファリングされているすべての出力をクリアしますが、HTTP 応答ヘッダはクリアしません。このメソッドはバッファリングされた出力をクリアするだけなので、BufferOutput プロパティを False に設定して出力のバッファリングを無効にした場合、何の作用も及ぼしません。この動作は、バッファリングが無効な場合に Clear を呼び出すとエラーが発生する従来の ASP とは異なります。 |
|
ClearContent | |
Response.ClearContent( ) | |
現在の出力ストリームのコンテンツをクリアします。 |
|
パラメータ | |
なし |
|
例 | |
次の例では、Response.Write を使用してテキストメッセージを書き込み、次に、バッファリングされている出力を Response.Clear の呼び出しによりクリアします。バッファリングが有効な場合、テキストメッセージはブラウザに送信されません。 |
|
Sub Page_Load( ) Response.Write("This content will not be seen.") Response.Clear( ) Message.Text = _ "Content written with <i>Response.Write</i> was cleared." End Sub |
|
メモ | |
ClearContent メソッドは、現在バッファリングされているすべての出力をクリアしますが、HTTP 応答ヘッダはクリアしません。HTTP ヘッダをクリアするには ClearHeaders メソッドを呼び出します。ClearContent メソッドはバッファリングされた出力をクリアするだけなので、BufferOutput プロパティを False に設定して出力のバッファリングを無効にした場合、何の作用も及ぼしません。 |
|
ClearHeaders | |
Response.ClearHeaders( ) | |
HTTP ヘッダを現在の出力ストリームからクリアします。 |
|
パラメータ | |
なし |
|
例 | |
次の例では、Content-Type HTTP ヘッダを "text/xml" に設定し、ClearHeaders メソッドを呼び出すことで HTTP ヘッダをクリアします。次に Message という ASP.NET の Label コントロールの Text プロパティに Response.ContentType プロパティの値を書き込みます。表示される Content-Type は初期設定値の "text/html" です。 |
|
Sub Page_Load( ) Response.AppendHeader("Content-Type", "text/xml") Response.ClearHeaders( ) Message.Text = Response.ContentType End Sub |
|
メモ | |
ClearHeaders メソッドは HTTP 応答ヘッダのみをクリアします。バッファリングされているコンテンツはクリアしません。 |
|
Close | |
Response.Close( ) | |
現在の応答のネットワークソケットを閉じます。 |
|
パラメータ | |
なし |
|
例 | |
SuppressContent プロパティのコード例を参照してください。 |
|
メモ | |
Close メソッドを使用すると、現在の応答のネットワークソケットをすぐに閉じることができます。稼動中のソケットを閉じると、通常、クライアントには "Cannot find server"(サーバーが見つかりません) などのブラウザエラーが表示されます。 |
|
End | |
Response.End( ) | |
すぐに現在の応答の処理を停止し、バッファリングされているすべてのコンテンツをクライアントに送信します。 |
|
パラメータ | |
なし |
|
例 | |
次の例では、"Hello, World!" というテキストをブラウザに書き込みます。次に Response.End を呼び出し、ASP.NET の Message という Label コントロールの Text プロパティを "Hello, World!" に設定します。ただし、End メソッドによってページの処理がすぐに停止されるため、コードは実行されません。 |
|
Sub Page_Load( ) Response.Write("Hello, World!") Response.End( ) Message.Text = "Hello, World!" End Sub |
|
前述のコードは、ページの静的 HTML とコントロールが表示されない場合にも、"Hello, World!" というテキストだけはブラウザに出力します。 |
|
メモ | |
End メソッドが呼び出されると、バッファリングされている出力がクライアントに送信されて処理が停止されるだけでなく、Application_EndRequest イベントが発生します。 |
|
Flush | |
Response.Flush( ) | |
バッファリングされているすべての出力をクライアントにすぐに送信します。 |
|
パラメータ | |
なし |
|
例 | |
BufferOutput プロパティの例を参照してください。BufferOutput を False に設定する行をコメントアウトし、Response.Flush を呼び出す行をコメントアウトしない場合、Flush メソッドを使用すると、バッファリングされているコンテンツをブラウザに明示的に送信できます。 |
|
メモ | |
ASP.NET では、バッファリング機能はデフォルトで有効に設定されているため、Flush メソッドが非常に役立ちます。バッファリング機能を無効にすると、Response.Write 呼び出しから送信されたすべてのコンテンツがブラウザにすぐに送信されます。この機能を使用しなくても、Response.Flush を使用してコンテンツを一定単位ごとに送信したり、またはすべての操作を確実に完了してから現在バッファリングされているコンテンツを送信することができます。 |
|
また、Response.Flush の呼び出しと Response.Clear の呼び出しを組み合わせると、コンテンツをブラウザに送信する前に事前に検証できます。指定した演算または出力のセットでエラーが発生した場合、Response.Clear を呼び出して問題の出力をクリアし、エラーメッセージまたはその他のコンテンツで置き換えることができます。出力でエラーが発生しない場合は、Response.Flush を呼び出してバッファリングされている出力をブラウザに送信し、処理を続行します。 |
|
Pics | |
Response.Pics(ByVal value As String) | |
PICS-Label ヘッダを現在の応答の出力ストリームに追加します。PICS (Platform for Internet Content Selection) は、暴力、性的描写、言葉遣い、ヌードなどのレベルに基づき、インターネットのコンテンツを格付けするために使用します。 |
|
パラメータ | |
|
|
例 | |
次の例では、RSAC を格付け機関として指定する PICS ヘッダを設定し、2001 年 8 月 1 日から 2002 年 2 月 28 日まで有効な格付けを設定します。また、格付けは次のように設定します。 |
|
|
|
Sub Page_Load( ) Dim PICSLabel As String PICSLabel &= "(PICS-1.1 <http://www.rsac.org/ratingsv01.html> " PICSLabel &= "labels on " & Chr(34) PICSLabel &= "2001.08.01T06:00-0000" & Chr(34) PICSLabel &= " until " & Chr(34) PICSLabel &= "2002.02.28T23:59-0000" & Chr(34) PICSLabel &= " ratings (V 1 S 2 L 3 N 4))" Response.PICS(PICSLabel) Message.Text = PICSLabel End Sub |
|
メモ | |
PICS-Label ヘッダは、サイトのコンテンツの格付けに使用します。PICS-Label ヘッダを送信するサイトの中で、格付け対象のカテゴリに関してブラウザで閲覧が許可されているレベルを超えるコンテンツを含むサイトについて、閲覧を禁止するようにブラウザを構成できます。PICS のコンテンツの格付け基準の詳細については、World Wide Web Consortium の Web サイト http://www.w3c.org を参照してください。 |
|
Redirect | |
Response.Redirect(ByVal url As String) | |
現在表示しているページを URL パラメータで指定した別のページにリダイレクトします。また任意で現在のページの処理を終了します。 |
|
パラメータ | |
|
|
例 | |
次の例では、現在の要求を "BufferOutput.aspx" にリダイレクトし、ASP.NET に現在のページの処理を続行しないよう指示します。 |
|
Sub Page_Load( ) Response.Redirect("BufferOutput.aspx", True) End Sub |
|
メモ | |
Response.Redirect を呼び出すページで追加の処理が必要でない限り、True を 2 番目のパラメータとして Response.Redirect に渡し、現在のページの処理を続行することによるサーバーリソースの消費を回避してください。処理の停止は ASP.NET の新しい機能です。url パラメータのみを指定して Response.Redirect を呼び出すと、現在のページの処理は自動的に停止されます。 |
|
バッファリングが無効になっている "BufferOutput.aspx" などのページ、または Response.Flush を呼び出すページにリダイレクトする場合、リダイレクト先のページの処理が完了するまでリダイレクトは完了しません。つまり、リダイレクト先のページのすべてのコンテンツは一度に表示されます。バッファからは表示または出力されません。 |
|
Write | |
Response.Write(ByVal ch As Char) | |
出力ストリームに任意のコンテンツを書き込むことができます。書き込むことができるコンテンツは、文字データ、オブジェクトの ToString( ) メソッドを使用するオブジェクトデータ、または文字列データです。 |
|
パラメータ | |
|
|
例 | |
次の例では、文字配列を作成し、文字の値を設定します。次に、配列全体をループし、Response.Write を呼び出してコンテンツを表示します。 |
|
Sub Page_Load( ) Dim MyChars(2) As Char Dim MyChar As Char MyChars(0) = CChar("A") MyChars(1) = CChar("B") MyChars(2) = CChar("C") For Each MyChar in MyChars Response.Write(MyChar) Next End Sub |
|
メモ | |
前述の例では、ASP.NET の Write メソッドで新しくオーバーロードされた実装を複数取得します。また、前述のコードは、文字配列、開始インデックス、および書き込む文字のカウントを受け取る別のオーバーロードされた実装を使用して記述することもできます。コード例を次に示します。 |
|
Response.Write(MyChars, 0, 3) |
|
パラメータとしてオブジェクトを受け取る Write メソッドの実装では、オブジェクトクラスの ToString 組み込みメソッドを使用して、オブジェクトの文字列表現を表示します。ToString は .NET の各クラスによって継承され、デフォルトではオブジェクトクラスの名前空間とクラスの名前を返します。クラスがクラス自体に関するそれ以外の情報を送信する場合、継承された ToString の実装を無視することがあります。 |
|
WriteFile | |
Response.WriteFile(ByVal fileName As String) | |
オーバーロードされたパラメータの 1 つで指定したファイルを出力ストリームに書き込みます。 |
|
パラメータ | |
|
|
例 | |
次の例では、"dep.txt" ファイルのコンテンツを現在の応答の出力ストリームに書き込みます。 |
|
Sub Page_Load( ) Response.WriteFile("dep.txt") End Sub |
|
メモ | |
WriteFile メソッドを使用して、さまざまな方法でファイルからテキストコンテンツを直接出力できます。イメージデータなど、その他のタイプのコンテンツを書き込もうとするとエラーが発生します。 |
|