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);
}
}