static void Process(HttpWorkerRequest req)
{
bool error = false;
if (firstRun)
{
firstRun = false;
if (initialException != null)
{
FinishWithException(req, HttpException.NewWithCode("Initial exception", initialException, WebEventCodes.RuntimeErrorRequestAbort));
error = true;
}
SetupOfflineWatch();
}
HttpContext context = new HttpContext(req);
HttpContext.Current = context;
if (AppIsOffline(context))
{
return;
}
//
// Get application instance (create or reuse an instance of the correct class)
//
HttpApplication app = null;
if (!error)
{
try {
app = HttpApplicationFactory.GetApplication(context);
} catch (Exception e) {
FinishWithException(req, HttpException.NewWithCode(String.Empty, e, WebEventCodes.RuntimeErrorRequestAbort));
error = true;
}
}
if (error)
{
context.Request.ReleaseResources();
context.Response.ReleaseResources();
HttpContext.Current = null;
}
else
{
context.ApplicationInstance = app;
req.SetEndOfSendNotification(end_of_send_cb, context);
//
// Ask application to service the request
//
IHttpHandler ihh = app;
// IAsyncResult appiar = ihah.BeginProcessRequest (context, new AsyncCallback (request_processed), context);
// ihah.EndProcessRequest (appiar);
ihh.ProcessRequest(context);
HttpApplicationFactory.Recycle(app);
}
}