<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://forums.silverlight.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Programming with .NET - General</title><link>http://forums.silverlight.net/forums/17.aspx</link><description>General discussions around authoring Silverlight .NET applications.</description><dc:language>en</dc:language><generator>CommunityServer 2007 (Build: 20416.853)</generator><item><title>Re: WCF error handling anyone</title><link>http://forums.silverlight.net/forums/thread/80579.aspx</link><pubDate>Thu, 14 Aug 2008 09:01:58 GMT</pubDate><guid isPermaLink="false">d0d632c8-a6f7-4f68-b0ce-26aaafd62132:80579</guid><dc:creator>xsdf</dc:creator><slash:comments>0</slash:comments><comments>http://forums.silverlight.net/forums/thread/80579.aspx</comments><wfw:commentRss>http://forums.silverlight.net/forums/commentrss.aspx?SectionID=17&amp;PostID=80579</wfw:commentRss><description>&lt;p&gt;Good solution .&amp;nbsp; &lt;br /&gt;&lt;/p&gt;</description></item><item><title>Re: WCF error handling anyone</title><link>http://forums.silverlight.net/forums/thread/70163.aspx</link><pubDate>Thu, 10 Jul 2008 21:54:28 GMT</pubDate><guid isPermaLink="false">d0d632c8-a6f7-4f68-b0ce-26aaafd62132:70163</guid><dc:creator>jslill</dc:creator><slash:comments>0</slash:comments><comments>http://forums.silverlight.net/forums/thread/70163.aspx</comments><wfw:commentRss>http://forums.silverlight.net/forums/commentrss.aspx?SectionID=17&amp;PostID=70163</wfw:commentRss><description>&lt;p&gt;I implemented a slightly different approach by creating a generic class to wrap a fault message string&amp;nbsp;along with the actual webservice operation result.&amp;nbsp; This ends up being pretty clean due to a bit of relection magic on the Silverlight client side.&amp;nbsp; Here&amp;#39;s what this would look like on the service side:&lt;/p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;span style="FONT-SIZE:8pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;"&gt;[ServiceContract]&lt;br /&gt;public interface IMyService {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [OperationContract]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GenericResult&amp;lt;double&amp;gt; Div(double p1,double p2);&lt;br /&gt;}&lt;/span&gt;&lt;span style="FONT-SIZE:8pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;"&gt;public class MyService : IMyService {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public GenericResult&amp;lt;double&amp;gt; Div(double p1,double p2) {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return GenericResult&amp;lt;double&amp;gt;(p1/p2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (DivideByZeroException e) {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return GenericResult&amp;lt;double&amp;gt;(e);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/span&gt;&lt;font face="Times New Roman" color="#000000" size="3"&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;Here’s what the Silverlight client side call to the generated WCF proxy would look like:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;span style="FONT-SIZE:8pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;void Div() {&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;MyServiceClient client = new MyServiceClient();&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;client.DivCompleted += new EventHandler&amp;lt;DivCompletedEventArgs&amp;gt;(OnDivCompleted);&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;client.DivAsync(10,20);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void OnDivCompleted(object sender,DivCompletedEventArgs args) {&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;double&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;result;&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;try {&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;result = GenericResult.GetOrThrow(args.Result);&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;catch (ServiceException e) {&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;// Handle exceptions thrown by the service&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;catch (Exception e) {&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// Handle exceptions thrown by Silverlight or WCF&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;&lt;span style="FONT-SIZE:8pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-SIZE:8pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;font color="#000000"&gt;The code for this is pretty straight forward.&amp;nbsp; The only realy trick necessary is the reflection to access the Result and Fault properties of the proxy class generated for the GenericResult&amp;lt;T&amp;gt;.&amp;nbsp; Here&amp;#39;s the code:&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:8pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="FONT-SIZE:8pt;COLOR:green;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Arial;"&gt;&lt;font color="#000000"&gt;&lt;span style="FONT-SIZE:8pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;public&lt;/span&gt;&lt;span style="FONT-SIZE:8pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;class&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;ServiceException&lt;/span&gt; : &lt;span style="COLOR:#2b91af;"&gt;Exception&lt;/span&gt; {&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt; ServiceException(&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt; message)&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;: &lt;span style="COLOR:blue;"&gt;base&lt;/span&gt;(message) {&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;span style="FONT-SIZE:8pt;"&gt;&lt;font face="Times New Roman"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:8pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;#if&lt;/span&gt;&lt;span style="FONT-SIZE:8pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; !SILVERLIGHT&lt;br /&gt;[&lt;span style="COLOR:#2b91af;"&gt;DataContract&lt;/span&gt;]&lt;/span&gt;&lt;span style="FONT-SIZE:8pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;#endif&lt;br /&gt;public&lt;/span&gt;&lt;span style="FONT-SIZE:8pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;class&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;GenericResult&lt;/span&gt;&amp;lt;TResult&amp;gt; {&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;static&lt;/span&gt; TResult GetOrThrow(&lt;span style="COLOR:blue;"&gt;object&lt;/span&gt; wrappedResult) {&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;if&lt;/span&gt; (wrappedResult == &lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;)&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;throw&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;ArgumentNullException&lt;/span&gt;(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;wrappedResult&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.&lt;span style="COLOR:#2b91af;"&gt;Type&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;resultType = wrappedResult.GetType();&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;PropertyInfo&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;property;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;fault;&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;property = resultType.GetProperty(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Fault&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;if&lt;/span&gt; (property != &lt;span style="COLOR:blue;"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; property.PropertyType == &lt;span style="COLOR:blue;"&gt;typeof&lt;/span&gt;(&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;)) {&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;fault = (&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;) property.GetValue(wrappedResult,&lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;);&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;if&lt;/span&gt; (fault != &lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;)&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;throw&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;ServiceException&lt;/span&gt;(fault);&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;property = resultType.GetProperty(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Result&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;if&lt;/span&gt; (property == &lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;)&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;throw&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;InvalidOperationException&lt;/span&gt;(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;GenericResult: Result object passed does not expose a [Result] property.&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;if&lt;/span&gt; (!&lt;span style="COLOR:blue;"&gt;object&lt;/span&gt;.ReferenceEquals(&lt;span style="COLOR:blue;"&gt;typeof&lt;/span&gt;(TResult),property.PropertyType))&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;throw&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;InvalidOperationException&lt;/span&gt;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR:#2b91af;"&gt;String&lt;/span&gt;.Format(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;GenericResult: Result object has type [{0}] rather than the expected [{1}] type.&amp;quot;&lt;/span&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; property.PropertyType.FullName,&lt;span style="COLOR:blue;"&gt;typeof&lt;/span&gt;(TResult).FullName));&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt; (TResult) property.GetValue(wrappedResult,&lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;);&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt; GenericResult() {&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.Result = &lt;span style="COLOR:blue;"&gt;default&lt;/span&gt;(TResult);&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.Fault&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;= &lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt; GenericResult(TResult result) {&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.Result = result;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.Fault&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;= &lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;span style="COLOR:gray;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt; GenericResult(&lt;span style="COLOR:#2b91af;"&gt;Exception&lt;/span&gt; e) {&lt;br /&gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.Result = &lt;span style="COLOR:blue;"&gt;default&lt;/span&gt;(TResult);&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.Fault&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;= e.Message;&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR:blue;"&gt;#if&lt;/span&gt; !SILVERLIGHT&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;span style="COLOR:#2b91af;"&gt;DataMember&lt;/span&gt;]&lt;br /&gt;&lt;span style="COLOR:blue;"&gt;#endif&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;public&lt;/span&gt; TResult Result { &lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;; &lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR:blue;"&gt;#if&lt;/span&gt; !SILVERLIGHT&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[&lt;span style="COLOR:#2b91af;"&gt;DataMember&lt;/span&gt;]&lt;br /&gt;&lt;span style="COLOR:blue;"&gt;#endif&lt;br /&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;public&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;string&lt;/span&gt; Fault { &lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;; &lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;; }&lt;br /&gt;}&lt;/span&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;"&gt;Note that these classes are designed to compile in Silverlight as well as normal .NET projects.&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;</description></item><item><title>Re: WCF error handling anyone</title><link>http://forums.silverlight.net/forums/thread/64768.aspx</link><pubDate>Tue, 24 Jun 2008 19:57:38 GMT</pubDate><guid isPermaLink="false">d0d632c8-a6f7-4f68-b0ce-26aaafd62132:64768</guid><dc:creator>Tim Favour</dc:creator><slash:comments>0</slash:comments><comments>http://forums.silverlight.net/forums/thread/64768.aspx</comments><wfw:commentRss>http://forums.silverlight.net/forums/commentrss.aspx?SectionID=17&amp;PostID=64768</wfw:commentRss><description>&lt;p&gt;Hi Henrik and thanks for the example code, I guess I will implement something similar. &lt;/p&gt;
&lt;p&gt;Btw, interesting how one can access out parameters as part of the EventArgs.&lt;/p&gt;
&lt;p&gt;Tim&lt;/p&gt;</description></item><item><title>Re: WCF error handling anyone</title><link>http://forums.silverlight.net/forums/thread/64503.aspx</link><pubDate>Tue, 24 Jun 2008 07:01:34 GMT</pubDate><guid isPermaLink="false">d0d632c8-a6f7-4f68-b0ce-26aaafd62132:64503</guid><dc:creator>hwsoderlund</dc:creator><slash:comments>0</slash:comments><comments>http://forums.silverlight.net/forums/thread/64503.aspx</comments><wfw:commentRss>http://forums.silverlight.net/forums/commentrss.aspx?SectionID=17&amp;PostID=64503</wfw:commentRss><description>&lt;p&gt;&amp;nbsp;The code is somewhat modified for clarity. &lt;/p&gt;
&lt;p&gt;The error object:&lt;/p&gt;
&lt;p&gt;

&lt;/p&gt;
&lt;div style="background:white none repeat scroll 0% 0%;font-family:Courier New;font-size:10pt;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;
&lt;p style="margin:0px;"&gt;[&lt;span&gt;DataContract&lt;/span&gt;]&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span&gt;GLSErrorObject&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin:0px;"&gt;{&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span&gt;DataMember&lt;/span&gt;]&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt; ErrorID { &lt;span style="color:blue;"&gt;get&lt;/span&gt;; &lt;span style="color:blue;"&gt;set&lt;/span&gt;; }&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span&gt;DataMember&lt;/span&gt;]&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt; ErrorMessage { &lt;span style="color:blue;"&gt;get&lt;/span&gt;; &lt;span style="color:blue;"&gt;set&lt;/span&gt;; }&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span&gt;DataMember&lt;/span&gt;]&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span&gt;DateTime&lt;/span&gt; ErrorTime { &lt;span style="color:blue;"&gt;get&lt;/span&gt;; &lt;span style="color:blue;"&gt;set&lt;/span&gt;; }&lt;/p&gt;

&lt;p style="margin:0px;"&gt;}&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;On the server side:&lt;/p&gt;
&lt;p&gt;

&lt;/p&gt;
&lt;div style="background:white none repeat scroll 0% 0%;font-family:Courier New;font-size:10pt;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;bool&lt;/span&gt; Login(&lt;span style="color:blue;"&gt;string&lt;/span&gt; userName, &lt;span style="color:blue;"&gt;string&lt;/span&gt; password, &lt;span style="color:blue;"&gt;out&lt;/span&gt; &lt;span&gt;GLSErrorObject&lt;/span&gt; GLSError)&lt;/p&gt;

&lt;p style="margin:0px;"&gt;{&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GLSError = &lt;span style="color:blue;"&gt;null&lt;/span&gt;;&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;try&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;bool&lt;/span&gt; success = AuthenticateUser(userName, password);&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;return&lt;/span&gt; success;&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;catch&lt;/span&gt; (&lt;span&gt;Exception&lt;/span&gt; ex)&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; GLSError = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span&gt;GLSErrorObject&lt;/span&gt;();&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; GLSError.ErrorMessage = ex.Message;&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; GLSError.ErrorTime = &lt;span&gt;DateTime&lt;/span&gt;.Now;&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;//etc...&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:blue;"&gt;false&lt;/span&gt;;&lt;/p&gt;

&lt;p style="margin:0px;"&gt;}&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;And on the client side the callback method will look something like this: &lt;/p&gt;
&lt;div style="background:white none repeat scroll 0% 0%;font-family:Courier New;font-size:10pt;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;

&lt;div style="background:white none repeat scroll 0% 0%;font-family:Courier New;font-size:10pt;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;
&lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;void&lt;/span&gt; AuthenticationClient_LoginCompleted(&lt;span style="color:blue;"&gt;object&lt;/span&gt; sender, &lt;span&gt;LoginCompletedEventArgs&lt;/span&gt; e)&lt;/p&gt;

&lt;p style="margin:0px;"&gt;{&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;if&lt;/span&gt; (e.Error != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;throw&lt;/span&gt; &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span&gt;Exception&lt;/span&gt;(e.Error.Message);&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;return&lt;/span&gt;;&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;else&lt;/span&gt; &lt;span style="color:blue;"&gt;if&lt;/span&gt; (e.GLSError != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;//Handle our custom error&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;throw&lt;/span&gt; &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span&gt;Exception&lt;/span&gt;(e.GLSError.ErrorMessage);&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;else&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;//All is well&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;//etc...&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;br /&gt;&lt;/p&gt;
&lt;p style="margin:0px;"&gt;&lt;br /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;/Henrik &lt;/p&gt;</description></item><item><title>Re: WCF error handling anyone</title><link>http://forums.silverlight.net/forums/thread/64329.aspx</link><pubDate>Mon, 23 Jun 2008 18:32:32 GMT</pubDate><guid isPermaLink="false">d0d632c8-a6f7-4f68-b0ce-26aaafd62132:64329</guid><dc:creator>Tim Favour</dc:creator><slash:comments>0</slash:comments><comments>http://forums.silverlight.net/forums/thread/64329.aspx</comments><wfw:commentRss>http://forums.silverlight.net/forums/commentrss.aspx?SectionID=17&amp;PostID=64329</wfw:commentRss><description>&lt;p&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="/Themes/silverlight/images/icon-quote.gif"&gt; &lt;strong&gt;hwsoderlund:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt; 
&lt;p&gt;I ended up rolling my own custom error object that I pass to the client as an out parameter. It means I have to do some extra coding, but I decided it was worth it, even if it might require some refactoring when (if?) proper soap exceptions can be caught on the client side.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;
&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Sounds like a pretty nice solution, I didn&amp;#39;t know out parameters were allowed in service calls. Do you have any example of your solution ?&lt;/p&gt;
&lt;p&gt;Tim&lt;/p&gt;</description></item><item><title>Re: WCF error handling anyone</title><link>http://forums.silverlight.net/forums/thread/64303.aspx</link><pubDate>Mon, 23 Jun 2008 16:34:10 GMT</pubDate><guid isPermaLink="false">d0d632c8-a6f7-4f68-b0ce-26aaafd62132:64303</guid><dc:creator>sladapter</dc:creator><slash:comments>0</slash:comments><comments>http://forums.silverlight.net/forums/thread/64303.aspx</comments><wfw:commentRss>http://forums.silverlight.net/forums/commentrss.aspx?SectionID=17&amp;PostID=64303</wfw:commentRss><description>&lt;p&gt;You can read this thread and I posted how I handle exception in WCF and pass it to Silverlight:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://silverlight.net/forums/p/17944/60019.aspx#60019" title="http://silverlight.net/forums/p/17944/60019.aspx#60019"&gt;http://silverlight.net/forums/p/17944/60019.aspx#60019&lt;/a&gt; &lt;br /&gt;&lt;/p&gt;</description></item><item><title>Re: WCF error handling anyone</title><link>http://forums.silverlight.net/forums/thread/64289.aspx</link><pubDate>Mon, 23 Jun 2008 16:10:08 GMT</pubDate><guid isPermaLink="false">d0d632c8-a6f7-4f68-b0ce-26aaafd62132:64289</guid><dc:creator>hwsoderlund</dc:creator><slash:comments>0</slash:comments><comments>http://forums.silverlight.net/forums/thread/64289.aspx</comments><wfw:commentRss>http://forums.silverlight.net/forums/commentrss.aspx?SectionID=17&amp;PostID=64289</wfw:commentRss><description>&lt;p&gt;I ended up rolling my own custom error object that I pass to the client as an out parameter. It means I have to do some extra coding, but I decided it was worth it, even if it might require some refactoring when (if?) proper soap exceptions can be caught on the client side.&lt;br /&gt;&lt;/p&gt;</description></item><item><title>Re: WCF error handling anyone</title><link>http://forums.silverlight.net/forums/thread/64222.aspx</link><pubDate>Mon, 23 Jun 2008 13:26:57 GMT</pubDate><guid isPermaLink="false">d0d632c8-a6f7-4f68-b0ce-26aaafd62132:64222</guid><dc:creator>Tim Favour</dc:creator><slash:comments>0</slash:comments><comments>http://forums.silverlight.net/forums/thread/64222.aspx</comments><wfw:commentRss>http://forums.silverlight.net/forums/commentrss.aspx?SectionID=17&amp;PostID=64222</wfw:commentRss><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;I think sladapters post is for a slightly different case where there is a 404 error but the cause is unclear. &lt;/p&gt;
&lt;p&gt;My problem is that when I rise an custom error in the service it ends up as a 404 in my client no matter what I try to do. Creating a FaultContract for the error type does not work and I got the impression it might not work in the final release so I am looking for a clean solution to propagate server/service errors to a Silverlight client.&lt;/p&gt;
&lt;p&gt;Tim&lt;/p&gt;</description></item><item><title>Re: WCF error handling anyone</title><link>http://forums.silverlight.net/forums/thread/64184.aspx</link><pubDate>Mon, 23 Jun 2008 12:18:34 GMT</pubDate><guid isPermaLink="false">d0d632c8-a6f7-4f68-b0ce-26aaafd62132:64184</guid><dc:creator>SteveWong</dc:creator><slash:comments>0</slash:comments><comments>http://forums.silverlight.net/forums/thread/64184.aspx</comments><wfw:commentRss>http://forums.silverlight.net/forums/commentrss.aspx?SectionID=17&amp;PostID=64184</wfw:commentRss><description>&lt;p&gt;&amp;nbsp;Please try to refer to sladapter&amp;#39;s post here&lt;/p&gt;&lt;p&gt;&lt;a href="http://silverlight.net/forums/p/18852/64012.aspx#64012%20"&gt;http://silverlight.net/forums/p/18852/64012.aspx#64012&amp;nbsp;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;if it still cant help, you can ask here with more details &lt;br /&gt;&lt;/p&gt;</description></item><item><title>WCF error handling anyone</title><link>http://forums.silverlight.net/forums/thread/64161.aspx</link><pubDate>Mon, 23 Jun 2008 11:23:37 GMT</pubDate><guid isPermaLink="false">d0d632c8-a6f7-4f68-b0ce-26aaafd62132:64161</guid><dc:creator>Tim Favour</dc:creator><slash:comments>0</slash:comments><comments>http://forums.silverlight.net/forums/thread/64161.aspx</comments><wfw:commentRss>http://forums.silverlight.net/forums/commentrss.aspx?SectionID=17&amp;PostID=64161</wfw:commentRss><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve understood that the SOAP error handling mechanism with fault contracts doesn&amp;#39;t work in beta 2 and possibly will not work in the RTM because of browser limitations.&lt;/p&gt;
&lt;p&gt;Does anybody have a pattern of handling WCF errorrs in Silverlight without hacking too heavily ?&lt;/p&gt;
&lt;p&gt;Tim&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item></channel></rss>