Re: HttpModules - Webservices
- From: Scott Allen <scott@xxxxxxxxxxxxxxxxxxxx>
- Date: Wed, 11 May 2005 16:57:18 -0400
Bruce:
Also wanted to point out you might consider a tool look Fiddler to
eyeball the request/response from a client machine and see if there
are obvious differences.
http://www.fiddlertool.com/fiddler/
HTH,
--
Scott
http://www.OdeToCode.com/blogs/scott/
On Wed, 11 May 2005 20:30:57 +0100, "Bruce Hodge"
<support@xxxxxxxxxxxxxxxxxx> wrote:
>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();
>
> }
>
>}
.
- Follow-Ups:
- Re: HttpModules - Webservices
- From: Bruce Hodge
- Re: HttpModules - Webservices
- References:
- HttpModules - Webservices
- From: Bruce Hodge
- HttpModules - Webservices
- Prev by Date: Re: Session problem in ASP.NET
- Next by Date: Re: Session problem in ASP.NET
- Previous by thread: Re: HttpModules - Webservices
- Next by thread: Re: HttpModules - Webservices
- Index(es):
Relevant Pages
|