Skip to main content

Handling exceptions thrown by WCF service

Exceptions thrown by the WCF services are represented as SOAP faults to the clients.Clients can handle these exceptions using a try and catch block. It is important to note that the services itself will continue running after throwing the exception. However, the exception will cause the client to fail if the exception is not handled by the client.

Further, when an exception occurs, the client may not see all the information related to the exception thrown. This is to ensure the security of the service. The amount of information depends on the type of the exception thrown. If it is a FaultException, lots of information about the exception is transmitted. However if it is not FaultException, just a generic fault information is sent to the client. In such situation, the faultcode in the SOAP message would be InternalServiceFault.

To include exception information, do one of the following:

  • Add the following annotation
                [ServiceBehavior(IncludeExceptionDetailInFaults=true)]

  • Add the following code to app.config

<system.serviceModel><behaviors><behavior name="default">
<serviceDebug includeExceptionDetailInFaults="true" />
 </behavior></behaviors></system.serviceModel>

Enabling Message Logging

To enable message logging use the following step:
  • Right click App.config of the host application
  • Select Edit WCF Configuration 
  • Select Diagnostics under Configuration
  • Click Enable MessageLogging
  • Click Message Logging under Diagnostics in Configuration
  • Set LogEntireMessage to True
To check the message you can use SvcTraceViewer, use the following steps:
  • Make your service throw an exception when one of the service operation is invoked
  • Run the application and make sure the an exception is thrown. 
  • Go to your host application folder. Now you should  be able to see a file called app_messages.svclog.
  • Double click on this file. It should open in SvcTraceViewer utility. 
  • Double click the first Activity. This should show you two MessageLogTrace. 
  • Notice that first message is a HttpRequest and the second message has a fault with faultcode InternalServiceFault.

Creating a FaultException

If you want to intentionally create a exception that is sent to the client then the best way to do this is to throw an exception of type FaultException or a type that derives from it.

throw new FaultException("An Error Occurred");

When a service throws a fault in this manner. This fault will be re-thrown as FaultException by the client.

You can also create a FaultException of type TDetails if you want the client to handle a contractually specified SOAP faults.

Order of handling exceptions in the client application 

  • FaultExceptions<TDetail>
  • FaultExceptions
  • ComminicationExceptions
  • TimeOutExceptions
  • Use finally block to check if the client channel has entered a faulted state if it has then the abort the client and create a new instance of the client if the client is required again. 

Links and references 

Comments

Popular posts from this blog

CUMIPMT and CUMPRINC function

CUMIPMT Cumulative interest payment function allows you to calculate the interest paid for a loan or from an investment from period A to period B. When getting a loan, CUMIPMT function can be used to calculate the total amount of interest paid in the first five months or from period 12 to period 20. A period can be a month, a week or two week. Loan Amount : 350,000.00 APR: 4.5% Down payment: 0.00 Years: 25 Payment per year: 12 From the above data, we can calculate the following: No of Period: 25 × 12 = 300 Periodic Rate: 4.5/12 = 0.375% Here is how you will substitute these values into the function. = CUMIPMT (periodic rate, No of period, vehicle price, start period, end period,  ) = CUMIPMT (0.375, 300, 350000, 1, 5, 0) In an excel worksheet, we use cell address instead of actual values as shown below: Here is the formula view of the worksheet: CUMPRINC Another related function is CUMPRINC. CUMPRINC function is used to calculate cumul

Excel PMT Function

PMT function is very useful for calculating monthly payment required to payback a loan or mortgage at a fixed rate. This function require a minimum of three inputs, periodic rate, number of periods, present value or the loan amount. Here is a simple example. Home Loan: 350,000.00 Interest rate: 4.5% Number of years to repay the loan: 25 Note: To calculate monthly payment, we need to find the monthly rate and number of months as shown above. Then it is simply a matter of substituting the values into the payment function, as shown in the formula view below.

BCG's Brand Advocacy Index

The Boston Consulting Group's (BCG) Brand Advocacy Index (BAI) is a metric developed to help companies measure the degree of customer advocacy for their brands. BAI focuses on the likelihood of customers to recommend a brand to others, which is a powerful indicator of brand strength and customer loyalty. Unlike other customer satisfaction or loyalty metrics, BAI emphasizes the importance of customer referrals and word-of-mouth marketing. BAI is calculated based on a survey where customers are asked about their willingness to recommend a brand to their friends, family, or colleagues. The responses are then used to compute a score, which ranges from -100 to 100. A higher BAI score indicates that a brand has more advocates who are likely to recommend the brand to others, while a lower score suggests that the brand has fewer advocates or even a higher number of detractors. BCG's research has shown that companies with higher BAI scores tend to experience higher growth rates and bett