S
sonic_soul
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_synchronous (
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');
}
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_synchronous (
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');
}