HttpModules - Webservices



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



.



Relevant Pages

  • Re: HttpModules - Webservices
    ... >Thought the solution was an HttpModule hooked into begin request, ... >public void OnBeginRequest ... > catch (Exception ex) ... >HttpRequest request) ...
    (microsoft.public.dotnet.framework.aspnet)
  • Re: HttpModules - Webservices
    ... eyeball the request/response from a client machine and see if there ... >Thought the solution was an HttpModule hooked into begin request, ... >public void OnBeginRequest ... > catch (Exception ex) ...
    (microsoft.public.dotnet.framework.aspnet)
  • RE: HTTP/ASMX Message Receive Failure: System.Xml.XmlException
    ... > So this character parsing problem is also within one of those webservices ... the exception is not captured in one of our ... > Martijn Kaag ... also is this webmethod take some string parameters? ...
    (microsoft.public.dotnet.framework.webservices.enhancements)
  • Re: Using the webbrowser object to get the document text
    ... thay are displayed in the webbrowser after calling the url that i created. ... is there any other posibility to get this GET request result? ... windows mobile device he only opend the GPRS connection. ... 'WebServices' instead? ...
    (microsoft.public.dotnet.framework.compactframework)
  • Re: Client found response content type of , but expected text/xml
    ... they are losing their connection to the webservices http pipeline? ... in the app_code directory except for the asmx file (even the asmx.cs is ... afterserialize event sees the exception and correctly sends the regular ... output stream and not my ...
    (microsoft.public.dotnet.framework.aspnet.webservices)