ASP.NET Webフォーム Responseオブジェクト
目次
ASP.NET Webフォーム Responseオブジェクト
概要
Pageクラスメンバーの1つ。
サーバーからクライアント(ブラウザ)へ返すデータを設定する。
レスポンス情報は、
(1)HTTPステータス
サーバー側での処理結果
(2)レスポンスヘッダー
サーバーやコンテンツに関わる情報
(3)レスポンス本体
コンテンツ本体(htmlテキスト)
から成り、それぞれを設定するプロパティが用意されている。
HTTPステータス
protected void Page_Load(object sender, EventArgs e)
{
Page.Response.StatusCode = (int)HttpStatusCode.OK;
}
ステータスコード列挙体
「HTTPプロトコル/HTTPステータスコード」参照
成功(200)
HttpStatusCode.OK
リソースが変更されていない(304)
HttpStatusCode.NotModified
HTTP認証を要求(401)
HttpStatusCode.Unauthorized
アクセスを拒否(403)
HttpStatusCode.Forbidden
リソースが見つからない(404)
HttpStatusCode.NotFound
HTTPメソッドが不許可(405)
HttpStatusCode.MethodNotAllowed
サーバーエラー(500)
HttpStatusCode.InternalServerError
応答に必要な機能が未実装(501)
HttpStatusCode.NotImplemented
レスポンスヘッダー
コンテンツタイプ
ブラウザに表示させるファイル種類をMIME(MIMU=Web版拡張子)で指定する。
デフォルトはtext/html
Page.Response.ContentType = "image/jpeg";
Page.Response.BinaryWrite("~.jpg");
※htmlではないのでそれぞれのファイル種類に応じた表示用メソッドが必要
「HTTPプロトコル/コンテンツタイプ」参照
Responseオブジェクトメソッド
Redirect
指定ページへ遷移させる。
Page.Response.Redirect(url: "Next.aspx");
Page.Server.Transfer(path: "Next.aspx");
では動作サーバー内のページのみページ遷移可能。しかも速度速い。
しかしコーディングミスやリソース変更時の挙動でダメージが大きいので非推奨
BinaryWrite
バイナリーファイル(htmlではない)ファイルを表示。
Page.Response.ContentType = "MIME");
Page.Response.BinaryWrite("ファイル名.拡張子");
Write
レガシーASPでの使用頻度は高かったが現在では非推奨。
リテラル等のWebフォームを利用すべき。
Page.Response.Write(s:"aaa");
クッキー操作
ローカルに保存されるテキスト情報
ブラウザを終了してもPCを再起動しても次のページに遷移しても削除されるまでは残る。
「HTTPプロトコル/クッキー」参照
Response.AppendCookie
※index.aspx
<body>
<form id="myForm" runat="server">
<asp:TextBox ID="myText" runat="server"></asp:TextBox><br />
<asp:Button ID="btnSave" runat="server" Text="保存" OnClick="btnSave_Click" />
</form>
</body>
※index.aspx.cs
public partial class index : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Request.Cookies["email"] != null)
{
//クッキーの内容をテキストボックスに表示
this.myText.Text = Request.Cookies["email"].Value;
}
}
}
protected void btnSave_Click(object sender, EventArgs e)
{
//クッキー作成
//(テキストボックスの内容をクッキーに保存)
HttpCookie myCookie = new HttpCookie(name: "email", value: this.myText.Text);
//クッキー有効期限を7日間に設定
myCookie.Expires = DateTime.Now.AddDays(value: 7);
//SSL通信のみを許可する
myCookie.Secure = true;
//HTTPプロトコル経由でのみアクセスできる
//(古いブラウザでは非対応)
myCookie.HttpOnly = true;
//クッキーが有効になるドメイン/フォルダを設定
myCookie.Domain = "https://office-yone.com/";
//クッキーをクライアントに送信
Response.AppendCookie(cookie: myCookie);
}
}