using System;
using System.Collections.Generic;
using System.Linq;using System.Text;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.ServiceModel.Dispatcher;
namespace WCF.ServiceLib.Exception
{/**//// <summary>/// Hello類/// </summary>
public class Hello : IHello, IDisposable, IServiceBehavior
{/**//// <summary>/// 拋出Exception異常/// </summary>
public void HelloException()
{throw new System.Exception("拋出Exception異常");}/**//// <summary>/// 拋出FaultException異常/// </summary>
public void HelloFaultException()
{throw new FaultException("拋出FaultException異常", new FaultCode("服務"));}/**//// <summary>/// 拋出FaultException<T>異常/// </summary>
public void HelloFaultExceptionGeneric()
{throw new FaultException<FaultMessage>(new FaultMessage { Message = "拋出FaultException<T>異常", ErrorCode = -1 }, "爲了測試FaultException<T>用的");}/**//// <summary>/// IErrorHandler處理異常/// </summary>
public void HelloIErrorHandler()
{throw new System.IO.IOException("拋出異常,用IErrorHandler處理");}/**//// <summary>/// 實現IDisposable接口的Dispose()方法/// </summary>
public void Dispose(){}
/**//// <summary>/// 爲契約增加自定義綁定參數/// </summary>/// <param name="serviceDescription">服務描述</param>/// <param name="serviceHostBase">服務宿主</param>/// <param name="endpoints">服務端點</param>/// <param name="bindingParameters">需要增加的自定義綁定參數</param>
public void AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase, System.Collections.ObjectModel.Collection<ServiceEndpoint> endpoints, System.ServiceModel.Channels.BindingParameterCollection bindingParameters){}/**//// <summary>/// runtime時修改屬性值或增加自定義擴展對象/// </summary>/// <param name="serviceDescription">服務描述</param>/// <param name="serviceHostBase">服務宿主</param>
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{IErrorHandler handler = new FaultErrorHandler();
foreach (ChannelDispatcher dispatcher in serviceHostBase.ChannelDispatchers)
{// 增加錯誤處理器 dispatcher.ErrorHandlers.Add(handler);
}
}/**//// <summary>/// 檢查服務描述和服務宿主,以確認服務可以成功運行/// </summary>/// <param name="serviceDescription">服務描述</param>/// <param name="serviceHostBase">服務宿主</param>
public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase){
}}}