private void ProcessRequest(object sender, HttpRequestEventArgs e)
{
try
{
var request = new RackRequest();
var response = new RackResponse(e.RequestContext.Response.OutputStream);
PrepareRackRequest(e.RequestContext.Request, request);
_rack.HandleRequest(request, response);
response.Status = response.Status;
foreach (var header in response.Headers)
if (header.Key.ToLower() != "content-length") //Cannot set directly
e.RequestContext.Response.Headers.Add(header.Key, header.Value);
}
catch (HttpListenerException)
{
return;
}
catch (Exception ex)
{
RequestProcessingError(this, new HttpRequestErrorEventArgs(e.RequestContext,ex));
var writer = new StreamWriter(e.RequestContext.Response.OutputStream);
writer.Write(ex.ToString());
writer.Flush();
}
}