我有一个 IHttpHandler ,我相信它可以从重用中受益,因为它的设置成本很高,而且是线程安全的。但是正在为每个请求创建一个新的处理程序。我的处理程序没有被重复使用。
以下是我的简单测试用例,没有昂贵的设置。这个简单的案例说明了我的问题:
public class MyRequestHandler : IHttpHandler
{
int nRequestsProcessed = 0;
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
nRequestsProcessed += 1;
Debug.WriteLine("Requests processed by this handler: " + nRequestsProcessed);
context.Response.ContentType = "text/plain";
context.Response.Write("Hello World");
}
}
Requests processed by this handler: 1
Requests processed by this handler: 1
Requests processed by this handler: 1
Requests processed by this handler: 1... at least 100 times. I never see > 1.
我是否误解了 IsReusable 的工作原理?还有其他东西可以打败重复使用吗?如果这有什么不同,我的处理程序将从 Silverlight 应用程序中调用。