Ajax invoke WebMethod with *out* Params

C

ckkwan

[WebMethod]
public void Test(string Str)

for the WebMethod above, I am able to invoke using Ajax by:

WebService.asmx/Test?Str='something'

But in the case below:

[WebMethod]
public void Test(string Str, out string OutStr)

I tried to invoke using the similar string:

WebService.asmx/Test?Str='something'

But i failed. It seems like there is a need for me to assing the
OutStr, but again OutStr is not supose to to be set right?

So, how can I invoke the above WebMethod using Ajax?

Thanks in advance.
 
D

DSK Chakravarthy

The actual purpose of the OUT parameter is pass data as reference and let
the data be modified by the calling method. Isn't it?? as web service is
disconnected and invoked in a different context, you cann't pass any
reference from WebService.

Thus, you code shouldn't have the OUT parameter.

HTH
Chakravarthy
 
C

ckkwan

The actual purpose of the OUT parameter is pass data as reference and let
the data be modified by the calling method. Isn't it?? as web service is
disconnected and invoked in a different context, you cann't pass any
reference from WebService.

Thus, you code shouldn't have the OUT parameter.

HTH
Chakravarthy

Well, if OUT parameter is NOT supose to appear in any WebService, then
Visual Studio should have generated a compile time error right :)

Besides, I look at the Input and Output XML string, it is 100%
possible if I invoke this WebService (with *OUT* parameter) using HTTP
SOAP or from anyother client like Java.

The problem now is, I need to invoke using Ajax, and passing in the
Query string as the Cmd :(


POST /WebConfig/Utils/External.asmx HTTP/1.1
Host: 127.0.0.1
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/Test"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://
schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<Test xmlns="http://tempuri.org/">
<Msg>string</Msg>
</Test>
</soap:Body>
</soap:Envelope>


HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://
schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<TestResponse xmlns="http://tempuri.org/">
<Name>string</Name>
<Id>string</Id>
<Res>string</Res>
</TestResponse>
</soap:Body>
</soap:Envelope>
 
D

DSK Chakravarthy

Dude,

First thing first, as webservice is in a different box, you can't have the
reference of a variable leaked onto that box. Secondly, when the request
gets onto http, it disconnects the reference, thus leaving you with no
connection with the calling method for the caller. If you understand this,
you would never argue on the concept of using the OUT in a method of a
webserver.

Coming to the compiler identifying the flaw, pl understand that it is not a
syntax flaw, but a logical flaw. With in a web service you can have a method
exposing an OUT parameter to one more method. So, the compiler assumes that
you are defining that for the purpose of another method. Hope you got the
point.

If you are aware of the mechanism of invoking the webservice using HTTP SOAP
or any other possiblity, kindly share that with us.. Infact, it violates the
rule of isolation. Anyhow, if you are successful, in developing some code
like that, pl share that with us.

HTH
 

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,769
Messages
2,569,581
Members
45,056
Latest member
GlycogenSupporthealth

Latest Threads

Top