HTTP 503 (Service Unavailable) error when calling a webservice inside the network

D

Dilip

Hello

This problem has been driving me mad for the past few days. I am
basically writing a generic utility in .NET/C# that can read any WSDL
file (over internet, intranet, localdir etc), generate dynamic proxy
on the fly and allow the user to invoke the methods.

It works perfectly *except* in these scenarios:

1) If I try to call a webservice deployed on another machine _within_
our network (LAN), WebResponse.GetResponse() fails with a Server
Unavailable Error (503).
2) To solve the above if I specify the correct proxy settings using
WebProxy.Address property, the WSDL file is retrieved alright.
2A) However if I assign WebRequest.Proxy with
WebProxy.GetDefaultProxy() then the WSDL retrieval fails again. But
lets for the moment ignore this and assume I am ok with step 2.
3) After I successfully create the dynamic proxy (using CodeDOM et
al), the MethodInfo.Invoke(objectinstance, argsforthemethod) blows up
with a WebException. I am attaching the stack trace in the bottom of
this mail.
4) I tried setting the Proxy property of SoapHttpClientProtocol
(objectinstance.GetProperty("Proxy") et al) but that has no effect.
5) Everything works PERFECTLY WELL if I access a public domain WSDL on
the internet (with or without the proxy settings -- it doesnt seem to
matter).

So bottom line is can somebody *please* tell me why this is not
working in the LAN scenario? and that too only when I invoke the
method and not when I retrieve the WSDL file?

Stacktrace follows:
==================
Exception has been thrown by the target of an invocation.
System.Net.WebException: The request failed with HTTP status 503:
Service Unavailable.
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage
message, WebResponse response, Stream responseStream)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String
methodName, Object[] parameters)
at WebServices.dynamicProxyGenerator.DynamicProxy.AMSWebService.echoHeartBeat(String
bstrEchoData)

Additional Info:
================
WebException.Response ---> System.Net.HttpWebResponse
WebException.Source ---> System.Web.Services
WebException.Status ---> ProtocolError
WebException.TargetSite.Name ---> ReadResponse

I ran Simon Fell's (www.pocketsoap.com) excellent tcpTrace utility.
In the LAN case I am able to see a GET request for my WSDL file (GET
/amswebservice/amswebservice.wsdl HTTP/1.1) and the subsequent
response. But when a method is invoked it doesn't even seem to hit
the webserver. Its intercepted somewhere in between and I can't
figure out where.

thanks a ton!
--Dilip
 
D

Dilip

Hello
[snipped...]

So bottom line is can somebody *please* tell me why this is not
working in the LAN scenario? and that too only when I invoke the
method and not when I retrieve the WSDL file?

I fixed this myself. Apparently I neglected to set the same proxy
server configuration on SoapHttpClientProtocol.Proxy property.

I still can't understand one point though. I basically copied the
entire proxy server settings found on IE's Tools->Internet
Options->Connection->LAN Settings page into
SoapHttpClientProtocol.Proxy property. However the application fails
if I simply call WebProxy.GetDefaultProxy(). what is the difference
between these 2 ways of setting up proxies? Why does the former work
while the latter fails?

thanks
--Dilip
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,990
Messages
2,570,211
Members
46,796
Latest member
SteveBreed

Latest Threads

Top