ASP.NET一般ハンドラは新しい方法でcontextを使用する.Response.Writeの解決方法

1760 ワード

最近いくつかの小さな例を作って、ASPを使います.NETの一般的なハンドラ(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");はい、簡単ではありませんか.達人のあなたに対して、もちろん見たくありません.