Very simple.net web service exception handling


  1. Create header exception
  2. Assign header  for special web method
  3. Exception handling at client: SoapException and SoapHeaderException

Header definition

public class WSHeader: SoapHeader
{
	public WSHeader()
	{
        
	}
    private DateTime _CallTime;
    public DateTime CallTime
    {
        get { return _CallTime; }
        set { _CallTime = value; }
    }
}

Webservice difinition and header assignment

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class TimingService : System.Web.Services.WebService
{
    public WSHeader DiscountHeader;
    public TimingService()
    {

        //Uncomment the following line if using designed components 
        //InitializeComponent(); 
    }

    [WebMethod]
    [SoapHeader("DiscountHeader", Direction = SoapHeaderDirection.In)]
    public double Discount(DateTime birthdate)
    {
        if (DiscountHeader == null)
            throw new SoapHeaderException("User invalid", SoapException.ClientFaultCode);
        else if (birthdate > DateTime.Now)
        {
            throw new SoapException("Birthdate invalid", SoapException.ClientFaultCode);
        }
        else
        {
            if (DateTime.Now.Year - birthdate.Year < 18)
                return 0.1;
            else
                return 0.0;
        }
    }
}

Call method from client

namespace Client
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                WS.WSHeader header = new Client.WS.WSHeader();
                header.CallTime = DateTime.Now.AddDays(-1);
                
                WS.TimingService client = new Client.WS.TimingService();

                client.WSHeaderValue = header;

                Console.WriteLine("Discount per: "+ client.Discount(new DateTime(2013, 1, 1))*100 + "%");
            }
            catch (SoapHeaderException ex)
            {
                Console.WriteLine("Header error: " + ex.Message);
            }
            catch(SoapException ex)
            {
                Console.WriteLine("Call error: " + ex.Message);
            }
        }
    }
}
Advertisements

Phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s