Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / ASP.NET / General / March 2008

Tip: Looking for answers? Try searching our database.

Ajax invoke WebMethod with *out* Params

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
ckkwan@my-deja.com - 13 Mar 2008 13:14 GMT
[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.
DSK Chakravarthy - 13 Mar 2008 15:56 GMT
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

> [WebMethod]
> public void Test(string Str)
[quoted text clipped - 18 lines]
>
> Thanks in advance.
ckkwan@my-deja.com - 14 Mar 2008 02:42 GMT
> 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
[quoted text clipped - 5 lines]
> 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>
DSK Chakravarthy - 14 Mar 2008 08:34 GMT
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

>> 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
[quoted text clipped - 49 lines]
>  </soap:Body>
> </soap:Envelope>
Peter Bromberg [C# MVP] - 13 Mar 2008 17:44 GMT
You cannot pass reference types over the wire from a webservice. Have the
method return a serializable type containing the two values instead.
-- Peter
Site: http://www.eggheadcafe.com
UnBlog: http://petesbloggerama.blogspot.com
Short Urls & more: http://ittyurl.net

> [WebMethod]
> public void Test(string Str)
[quoted text clipped - 18 lines]
>
> Thanks in advance.

Rate this thread:







Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.