HttpModules - Webservices
- From: "Bruce Hodge" <support@xxxxxxxxxxxxxxxxxx>
- Date: Wed, 11 May 2005 20:30:57 +0100
Hi,
We have a couple of clients who are having trouble connecting to .Net
webservices, (they're coming from PHP and VFP). We were looking to provide
a diagonostic tool that displayed the soap message submitted so that if the
call failed they could compare their SoapMessage with the ones we generate
in .Net.
Thought the solution was an HttpModule hooked into begin request, but after
approx 10 requests it hangs the webservice/aspnet service, any thoughts?
Code below.
(The HttpRequests are stored in Typed Dataset, stored on the Application
object so that they can be accessed from webpages.)
public void OnBeginRequest(Object s, EventArgs e)
{
try
{
// Cast the Object to the HttpApplication variable.
HttpApplication app = (HttpApplication)s;
HttpRequest newRequest = app.Request;
string servers = this.ServicesToMonitor();
int posn =
servers.ToLower().IndexOf(this.GetServiceName(newRequest).ToLower());
if (posn > -1)
this.AddFromHttpRequest(this.RequestHistory, newRequest);
}
catch (Exception ex)
{
//Custom error logging code
}
}
private void AddFromHttpRequest(Mars.Schema.HttpRequests history,
HttpRequest request)
{
try
{
HttpContext.Current.Application.Lock();
byte [] byteArray = new byte[request.ContentLength];
request.InputStream.Read(byteArray, 0, request.ContentLength);
// Must reset the Input Stream position or the whole process fails.
request.InputStream.Position = 0;
Mars.Schema.HttpRequests.RequestsRow row =
this.RequestHistory.Requests.AddRequestsRow(
request.RawUrl,
request.HttpMethod,
request.ContentType,
request.ContentLength,
Encoding.ASCII.GetString(byteArray, 0, request.ContentLength),
DateTime.Now,
this.GetServiceName(request),
this.SOAPAction(request),
request.ServerVariables["REMOTE_ADDR"]);
foreach (string s in request.Headers.AllKeys)
this.RequestHistory.HttpHeaders.AddHttpHeadersRow(row.RequestID,
s, request.Headers[s]);
while (this.RequestHistory.Requests.Count > this.HistorySize)
{
this.RequestHistory.Requests[0].Delete();
}
this.RequestHistory.AcceptChanges();
HttpContext.Current.Application.UnLock();
}
catch (Exception ex)
{
#region Catch Block
#endregion
HttpContext.Current.Application.UnLock();
}
}
--
Regards
Bruce Hodge
.
- Follow-Ups:
- Re: HttpModules - Webservices
- From: Scott Allen
- Re: HttpModules - Webservices
- From: Scott Allen
- Re: HttpModules - Webservices
- Prev by Date: Re: need help with content type application/msword formatting page as envelope
- Next by Date: Exporting data into Excel, Word in ASP.NET - Please help !!!
- Previous by thread: Strange Cookie problem!
- Next by thread: Re: HttpModules - Webservices
- Index(es):
Relevant Pages
|