How do I xml serialize a custom exception so it can be included as a
parameter on my webmethod? See extra details below.
I have an audit web service which attempts to log exceptions to a database.
The web method looks like:
<WebMethod(Description:="Log process message.")> _
Public Function AddProcessMessage( _
ByVal ProcessExecutionKey As Long, _
ByVal AppEx As UserException) As Boolean
' Returns true if successfully logs the message and the AppEx log
flag will also be set to true.
Return ProcessExecution.AddProcessMessage(ProcessExecutionKey, AppEx )
End Function
This generates an error complaining about security permissions on the base
exception class, eg. properties such as 'TargetSite' can not be serialised.
Do I need to do imperative asserts or explicit demands or both. If so could
you give me a code example that relaxes the security on xml serializing a
custom exception.
Thanks.
Christoph Schittko [MVP] - 09 Nov 2004 22:49 GMT
Matt,
The XmlSerializer, that's serializing the web service message can't deal
with exceptions [0]. You have to develop a custom wrapper that "hides"
the properties that the XmlSerializer can't process.
HTH,
Christoph Schittko
MVP XML
http://weblogs.asp.net/cschittko
[0]
http://msdn.microsoft.com/library/en-us/dnexxml/html/xml01202003.asp?fra
me=true
> -----Original Message-----
> From: Matt Bush [mailto:Matt Bush@discussions.microsoft.com]
[quoted text clipped - 32 lines]
>
> Thanks.
Dan Rogers - 11 Nov 2004 22:54 GMT
Concur. Rather than base your types on the internal exception types (which
are not portable), I'd suggest designing an exception base class of your
own in XSD, just like you would design a business document such as an
order. Then, generate classes from this XSD using XSD.exe or
XSDObjectGen.exe, and build your service interface to accept the typed
classes that result. This will give you the interface you need without
introducing underlying platform item specific serialization issues.
Regards,
Dan Rogers
Microsoft Corporation
--------------------
>Thread-Topic: Serializing custom exception through a webmethod call.
>thread-index: AcTGqmaBU5DO+l+zRoKcjT3nv7Thwg==
[quoted text clipped - 17 lines]
>Path: cpmsftngxa10.phx.gbl!TK2MSFTNGXA03.phx.gbl
>Xref: cpmsftngxa10.phx.gbl
microsoft.public.dotnet.framework.aspnet.webservices:26429
>X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.webservices
>
[quoted text clipped - 23 lines]
>
>Thanks.