Tuesday, June 21, 2005

How to return WebService Exception [Q&A]

Question was:

vWhat is the best way to return an error from webservice? Can I simply throw the exception in my service or do I have to do some work to package the error message into the SOAP return?

Answer:

Only possible way to pass exception is to build SOAP Exception and to generate XML which contains all necessary info - Type of exception, message, fields. Actually, in general case you need wrapper in EVERY WebMethod:

[WebMethod]
public void Method()
{
try { /* code here */ }
catch (Exception e)
{
throw ExceptionWrapper.WrapException(e); }
}
Warning:

For some reason, Application.OnError event do not invoked for WebServices.

Some code fragments concentrated on wrapping/unwrapping Exception properties to xml which I hope could be helpful and includes example of custom WrapException method:

http://dotnet.osypchuk.com/Sources/WsExceptionsClues.txt

The same technics could be used for any dotNet language - VB.NET, C#, or J#.

Update: Thanks to Martin Bohm [http://www.theserverside.net/user/userthreads.tss?user_id=587623]

It is possible to catch all exceptions in one place by Soap extenson, more details on

http://www.codeproject.com/aspnet/ASPNETExceptionHandling.asp


Applies to all dotnet languages: C#, VB.NET, C++.NET, J#

1 Comments:

At 6:46 AM, Anonymous Anonymous said...

very thanks,

for your pragmatic approach!!!

good!

 

Post a Comment

<< Home