user20358
user20358

Reputation: 14736

throwing Fault Exceptions in WCF service and handling in Silverlight

I am throwing an exception in a Silverlight enabled service and catching it in my silverlight client. I have done everything as per the manual, but still getting what I think is unexpected behavior.

Code from Client

        try
        {
            client.ThrowFaultExceptionCompleted += (s, args) =>
            {
                DoCallback(args);
            };

            client.ThrowFaultExceptionAsync(new ThrowFaultExceptionRequest());
        }
        catch (FaultException<MyFaultException> myFex)
        {

        }
        catch (FaultException fex)
        {

        }

Here is the code from the service

My Custom Fault Exception class

[DataContract]
public class MyFaultException
{
    private string _reason;
    private string _myExceptionStackTrace;

    [DataMember]
    public string Reason
    {
        get { return _reason; }
        set { _reason = value; }
    }

    [DataMember]
    public string MyExceptionStackTrace
    {
        get { return _myExceptionStackTrace; }
        set { _myExceptionStackTrace = value; }
    }
} 

The bit of service side code that throws the fault exception. For testing purposes I am calling this method from the client.

    [OperationContract]
    [FaultContract(typeof(MyFaultException))]
    public void ThrowFaultException()
    {
        MyFaultException mfex = new MyFaultException();
        mfex.Reason = "No Reason!";
        mfex.MyExceptionStackTrace = "Long stack trace here";

        System.ServiceModel.Web.WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.OK;
        //throw new FaultException<MyFaultException>(mfex ,new FaultReason(new FaultReasonText("My Fault Reason Text here!")), new FaultCode("my fault code here"));
        throw new FaultException<MyFaultException>(mfex);
    }

no matter if I throw the FaultException with a single param or those three params in the commented line I get an error in my Reference.cs file in the silverlight proxy class like the one below

error message in reference.cs

and it doesnt ever go to either of the catch blocks.. Is this normal behavior? I have to now catch the error in the callback method DoCallback(args) and in that method check for (args.Error == null). Why doesnt the catch block get hit?

Thanks for your time...

Upvotes: 0

Views: 2823

Answers (1)

fab
fab

Reputation: 133

Found something that might be useful. You need to change the debugging settings in Visual studio.

Go to Tools -> Options -> Debugging -> General and uncheck "Enable the exception assistant" and "Enable Just My Code (Managed only)"

Upvotes: 3

Related Questions