.NET Tutorials, Forums, Interview Questions And Answers
Welcome :Guest
 
Sign In
Register
 
Win Surprise Gifts!!!
Congratulations!!!


Top 5 Contributors of the Month
david stephan

Home >> Articles >> WCF >> Post New Resource Bookmark and Share   

 Subscribe to Articles

Error Handling in WCF RESTful Service

Posted By:Imran Ghani       Posted Date: January 22, 2014    Points: 200    Category: WCF    URL: http://www.dotnetspark.com  

How to handle errors in WCF RESTful services with WebFaultException?
 

WCF possesses the capability to handle errors for RESTful services and return appropriate HTTP status code as well as error details using standard formats like JSON or XML. So,WebFaultException is the class used to return: 
  • HTTP status code only, or
  • HTTP status code and user-defined type.
We can define a custom type for error details and pass it to WebFaultException class constructor. Further, this custom type is serialized using defined format (i.e. JSON/XML) and forwarded to the client.

This WCF tutorial is part of series on Creating WCF RESTful services. In previous articles, we created RESTful services peforming all CRUD operations and later in Part-2, consuming it using jQuery. Here in this part, our focus is on error handling mechanism supported by WCF for HTTP services. We will be referring the previous article example here, so I'll recommend to go through it first.

Now, its quite simple to return HTTP status code only. For example in previous article, we created a WCF RESTful service having a service method GetBookById. It takes a bookId as method parameter and return Book object against provided bookId in JSON format. So, in order to return proper HTTP status code, we can update the implementation as follows:
 public Book GetBookById(string id)
 {
            Book book = repository.GetBookById(int.Parse(id));
            if (book == null)
            {
throw new WebFaultException(HttpStatusCode.NotFound);
            }
            return book;
 }

But if we wanted to add some custom details with error code, we need to provide a user-defined type that holds the information. I have created one simple custom error type but you can modify it according to your need.
 [DataContract]
 public class MyCustomErrorDetail
 {
        public MyCustomErrorDetail(string errorInfo, string errorDetails)
        {
            ErrorInfo = errorInfo;
            ErrorDetails = errorDetails;
        }

        [DataMember]
        public string ErrorInfo  { get; private set; }

        [DataMember]
        public string ErrorDetails { get; private set; }
 }

And implementation for the same service method GetBookById will be updated accordingly as follows:
 public Book GetBookById(string id)
 {
            Book book = repository.GetBookById(int.Parse(id));
            if (book == null)
            {
MyCustomErrorDetail customError = new MyCustomErrorDetail(                                                                                                            "Book not found",
                "No book exists against provided bookId.");
throw new WebFaultException<MyCustomErrorDetail>(customError, HttpStatusCode.NotFound);
            }
            return book;
 }

Hopefully, this article will helpful in custom error handling for WCF RESTful service.

 Subscribe to Articles

     

Further Readings:

Responses

No response found. Be the first to respond this post

Post Comment

You must Sign In To post reply
Find More Articles on C#, ASP.Net, Vb.Net, SQL Server and more Here

Hall of Fame    Twitter   Terms of Service    Privacy Policy    Contact Us    Archives   Tell A Friend