ASP.NET一般ハンドラは新しい方法でcontextを使用する.Response.Writeの解決方法
1760 ワード
最近いくつかの小さな例を作って、ASPを使います.NETの一般的なハンドラ(Handler).ちょっとした問題にぶつかった.この小さな問題を解決するのはとても簡単で、関数の中の局所変数をグローバル変数に変えるだけで解決しましたが、時には人が愚かで、例えば私のように少しです.考えなければならない.
この小さな問題を話してください.一般的なハンドラで、メソッドを追加して、Hi Handlerを出力したいです.しかし、この方法ではcontextは使えないことに気づいた.Respose.Writeという言葉.たとえば、次のコードがあります.
方法SayHelloではcontextは使えないことがわかります.Response.Write("Hi Handler");contextはProcessRequestでしか使えないからです.では、この時はどうしますか.ProcessRequestメソッドの外側にHttpContextの変数を定義します.たとえば、private HttpContext context;この変数に値を付けるContext=contextとは、例えば、次のようなコードである.
このときSayHelloメソッドではcontextが使用できます.Response.Write("Hi Handler");はい、簡単ではありませんか.達人のあなたに対して、もちろん見たくありません.
この小さな問題を話してください.一般的なハンドラで、メソッドを追加して、Hi Handlerを出力したいです.しかし、この方法ではcontextは使えないことに気づいた.Respose.Writeという言葉.たとえば、次のコードがあります.
namespace
{
public class HandlerTest : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
SayHello();
}
public void SayHello()
{
context.Response.Write("Hi Handler");
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
方法SayHelloではcontextは使えないことがわかります.Response.Write("Hi Handler");contextはProcessRequestでしか使えないからです.では、この時はどうしますか.ProcessRequestメソッドの外側にHttpContextの変数を定義します.たとえば、private HttpContext context;この変数に値を付けるContext=contextとは、例えば、次のようなコードである.
public class HandlerTest : IHttpHandler
{
private HttpContext context;
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
this.context = context;
SayHello();
}
public void SayHello()
{
context.Response.Write("Hi Handler");
}
public bool IsReusable
{
get
{
return false;
}
}
}
このときSayHelloメソッドではcontextが使用できます.Response.Write("Hi Handler");はい、簡単ではありませんか.達人のあなたに対して、もちろん見たくありません.