再利用可能な HTTPHandlers に問題があります。IsReusable
プロパティの仕組みを確認したかったのです。そこで、2 つのハンドラーを作成しました。
再利用可能:
public class ReusableHandler : IHttpHandler
{
public bool IsReusable
{
get { return true; }
}
private int _counter;
public ReusableHandler()
{
_counter = 0;
}
public void ProcessRequest(HttpContext context)
{
context.Response.Write("Reusable: " + _counter++);
}
}
再利用不可:
public class NonReusableHandler : IHttpHandler
{
public bool IsReusable
{
get { return false; }
}
private int _counter;
public NonReusableHandler()
{
_counter = 0;
}
public void ProcessRequest(HttpContext context)
{
context.Response.Write("NonReusable: " + _counter++);
}
}
どちらも期待どおりに機能します。 Reusable は毎回増分値を返しますが、 NonReusable は毎回 0 を返します。しかし、ハンドラーを WebHandlers (*.ashx) として使用すると、両方とも毎回 0 を返します (コードはまったく同じです)。WebHandlers を使用するとIsReusable
プロパティが無視されるということですか?