private void BuildRequestResponse(IRequest originalRequest, IPEndPoint remote, IResponse originalResponse, int messageNumber)
{
state_.Logger.Information("{0} {1} {2}{3}", originalRequest.Method, originalRequest.Uri.Scheme, originalRequest.Uri.Host, originalRequest.Uri.AbsolutePath);
state_.Logger.Debug(" " + originalRequest.Uri.Query);
HttpWebRequest request = PrepareRequest(originalRequest, remote, messageNumber);
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
WriteResponse(originalRequest, originalResponse, response, messageNumber);
}
catch(WebException ex)
{
state_.Logger.Exception(ex, "Error requesting {0}", request.RequestUri);
if(ex.Response != null)
WriteResponse(originalRequest, originalResponse, (HttpWebResponse)ex.Response, messageNumber);
else
originalResponse.Status = HttpStatusCode.InternalServerError;
}
}