Service unavailable on First call in synchronous mode only! question for webservice.htc gurus.

Posted: 10-20-2004, 10:39 PM
Hi,
This is a interesting problem.

I got webservice.htc integrated pretty well with .net framework. I
wrote a control that generates all the necessary scripts to consume
webservices with dhtml objects.

It is working great for me accept for one scenario.

When the page loads, and the first webservice call is synchronous, it
returns "service unavailable" error, BEFORE actually making the server
call!

After stepping through the webservice.htc file a few [dozen] times i
noticed that:
callService method checks for readyState == 4 (completed) status of
the xml object. if call is synchronous and status isnt 4 it throws the
"service unavailable" error.

the status is actually 3 (loaded) during the call.

after callservice is executed and I get the nice error alert,
onreadystatechange event is exected again and the xml doc is now in
completed state.

therefore every call after this is successful!


I am running out of ideas on how to troubleshoot this further (other
than working around by making a dummy call to the ws on page load) but
i would hate to work around such important issue.


here is my abridged viewsource (all my js is autogenerated by asp.net
control):

<div id="WebService_233632359"
style="behavior:url(/scripts/webservice.htc)">

function Confirmation_servicecontrol_SubmitTrade_synchronou s (
Quantity, Price, Symbol, tradeId, Action ) {

// create call object and set its properties

var callobject = new Object();
callobject.funcName = 'SubmitTrade';
callobject.async = false;


// register service if this is the first time running it
// tagid.classname ( classname = name of server side class which
methods will be using )
if ( ! WebService_233632359.Confirmation ) {

// check if this service has a registration function
if ( typeof(register_Confirmation_servicecontrol) == 'function' )
{
register_Confirmation_servicecontrol();
} else {

// are we in debug mode ?
if (register_Confirmation_servicecontrol) {
alert( 'registration function not found
register_Confirmation_servicecontrol' );
}
return;
}
}

// verify that the service was registered and call it
if ( WebService_233632359.Confirmation ) {


// webservice call

return WebService_233632359.Confirmation.callService( callobject ,
Quantity, Price, Symbol, tradeId, Action );


} else {
if (true) { alert( ' service failed to register ::
WebService_233632359:Confirmation ' ); }
}

}

function register_Confirmation_servicecontrol() {
WebService_233632359.useService('http://localhost/pbt/Confirmation.asmx?wsdl','Confirmation');
}
Reply With Quote

Responses to "Service unavailable on First call in synchronous mode only! question for webservice.htc gurus."

David
Guest
Posts: n/a
 
RE: Service unavailable on First call in synchronous mode only! questi
Posted: 10-26-2004, 04:41 PM
Actually, if you're calling the service synchronously, I believe the
applicable code is in the _invoke method of webservice.htc. Specifically the
following code block:

try
{
oXmlHttp.xmlHttp.send(szPayload);
}
catch(e)
{
return returnError(oCall, 5);
}
if (oXmlHttp.xmlHttp.responseXML.parseError.errorCode != 0)
{
_errUnknownS.raw = oXmlHttp.xmlHttp.responseText;
return returnError(oCall, 4);
}

If you'll send me your email, I'll send you a commented/formatted version of
webservice.htc that I just created. If you're going to spend much time
trying to understand that code - like I've been trying to do - you'll need
all the help you can get!

David Thom
dathom@npsinc.com




"sonic_soul" wrote:
> Hi,
> This is a interesting problem.
>
> I got webservice.htc integrated pretty well with .net framework. I
> wrote a control that generates all the necessary scripts to consume
> webservices with dhtml objects.
>
> It is working great for me accept for one scenario.
>
> When the page loads, and the first webservice call is synchronous, it
> returns "service unavailable" error, BEFORE actually making the server
> call!
>
> After stepping through the webservice.htc file a few [dozen] times i
> noticed that:
> callService method checks for readyState == 4 (completed) status of
> the xml object. if call is synchronous and status isnt 4 it throws the
> "service unavailable" error.
>
> the status is actually 3 (loaded) during the call.
>
> after callservice is executed and I get the nice error alert,
> onreadystatechange event is exected again and the xml doc is now in
> completed state.
>
> therefore every call after this is successful!
>
>
> I am running out of ideas on how to troubleshoot this further (other
> than working around by making a dummy call to the ws on page load) but
> i would hate to work around such important issue.
>
>
> here is my abridged viewsource (all my js is autogenerated by asp.net
> control):
>
> <div id="WebService_233632359"
> style="behavior:url(/scripts/webservice.htc)">
>
> function Confirmation_servicecontrol_SubmitTrade_synchronou s (
> Quantity, Price, Symbol, tradeId, Action ) {
>
> // create call object and set its properties
>
> var callobject = new Object();
> callobject.funcName = 'SubmitTrade';
> callobject.async = false;
>
>
> // register service if this is the first time running it
> // tagid.classname ( classname = name of server side class which
> methods will be using )
> if ( ! WebService_233632359.Confirmation ) {
>
> // check if this service has a registration function
> if ( typeof(register_Confirmation_servicecontrol) == 'function' )
> {
> register_Confirmation_servicecontrol();
> } else {
>
> // are we in debug mode ?
> if (register_Confirmation_servicecontrol) {
> alert( 'registration function not found
> register_Confirmation_servicecontrol' );
> }
> return;
> }
> }
>
> // verify that the service was registered and call it
> if ( WebService_233632359.Confirmation ) {
>
>
> // webservice call
>
> return WebService_233632359.Confirmation.callService( callobject ,
> Quantity, Price, Symbol, tradeId, Action );
>
>
> } else {
> if (true) { alert( ' service failed to register ::
> WebService_233632359:Confirmation ' ); }
> }
>
> }
>
> function register_Confirmation_servicecontrol() {
> WebService_233632359.useService('http://localhost/pbt/Confirmation.asmx?wsdl','Confirmation');
> }
>
Reply With Quote
 
LinkBack Thread Tools Search this Thread Display Modes
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Web service calls asynchronous vs synchronous J_Master Macromedia Flex General Discussion 0 02-16-2005 04:39 PM
web service unavailable Owen ASP.NET Web Services 3 05-11-2004 12:01 PM
Newbie Question: fill a dataset with results from web service call Todd ASP.NET Web Services 4 01-09-2004 04:57 PM
Question to all ASP GURUS MFA ASP Components 2 08-15-2003 05:37 PM
HTTP 503 (Service Unavailable) error when calling a webservice inside the network Dilip ASP.NET Web Services 1 07-18-2003 01:32 PM