WCF的異常處理
介紹
WCF(Windows Communication Foundation) -異常處理:一般Exception的處理,F(xiàn)aultException和FaultException<T>的拋出和處理,使用IErrorHandler處理異常。
下面介紹第三種異常:FaultException<T>的拋出和處理
一、強(qiáng)類型化一個(gè)SOP錯(cuò)誤類,傳遞需要用[DataContract]
/// <summary>
/// 錯(cuò)誤信息實(shí)體類(用于錯(cuò)誤契約FaultContract)
/// </summary>
[DataContract]
public class FaultMessage
{
/// <summary>
/// 錯(cuò)誤信息
/// </summary>
[DataMember]
public string Message { get; set; }
/// <summary>
/// 錯(cuò)誤代碼
/// </summary>
[DataMember]
public int ErrorCode { get; set; }
}二、在操作協(xié)定中用[FaultContract]錯(cuò)誤協(xié)定指定錯(cuò)誤類型
[ServiceContract]
public interface IHello
{
[OperationContract]
[FaultContract(typeof(FaultMessage))]
void HelloFaultExceptionGeneric();
}三、在實(shí)現(xiàn)代碼中,定義一個(gè)方法,可以拋出一個(gè)FaultException<FaultMessage>的異常
/// <summary>
/// Hello類
/// </summary>
public class Hello : IHello
{
/// <summary>
/// 拋出FaultException<T>異常
/// </summary>
public void HelloFaultExceptionGeneric()
{
throw new FaultException<FaultMessage>(new FaultMessage { Message = "拋出FaultException<T>異常", ErrorCode = -1 }, "為了測(cè)試FaultException<T>用的");
}
}四、在客戶端中,可以捕獲FaultException<FaultMessage>的異常。FaultMessage用Detail屬性訪問(wèn)。
protected void btnHelloFaultExceptionGeneric_Click(object sender, EventArgs e)
{
ExceptionService.HelloClient proxy = new ExceptionService.HelloClient();
try
{
proxy.HelloFaultExceptionGeneric();
}
catch (System.ServiceModel.FaultException<ExceptionService.FaultMessage> ex)
{
lblMsg.Text = string.Format("錯(cuò)誤代碼:{0};錯(cuò)誤信息:{1};錯(cuò)誤原因:{2}",
ex.Detail.ErrorCode.ToString(),
ex.Detail.Message,
ex.Reason.ToString());
}
finally
{
proxy.Close();
}
}到此這篇關(guān)于WCF異常處理的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#反射在實(shí)際應(yīng)用中的實(shí)例代碼
C#反射在實(shí)際應(yīng)用中的實(shí)例代碼,需要的朋友可以參考一下2013-03-03
詳解C#對(duì)路徑...的訪問(wèn)被拒絕解決過(guò)程
這篇文章主要介紹了詳解C#對(duì)路徑...的訪問(wèn)被拒絕解決過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
C#實(shí)現(xiàn)復(fù)制文件夾中文件到另一個(gè)文件夾的方法
這篇文章主要介紹了C#實(shí)現(xiàn)復(fù)制文件夾中文件到另一個(gè)文件夾的方法,實(shí)例分析了C#實(shí)現(xiàn)文件夾的查找、判斷及文件復(fù)制相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
C#獲取鼠標(biāo)在listview右鍵點(diǎn)擊單元格的內(nèi)容方法
下面小編就為大家?guī)?lái)一篇C#獲取鼠標(biāo)在listview右鍵點(diǎn)擊單元格的內(nèi)容方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01
C#實(shí)現(xiàn)從位圖到布隆過(guò)濾器的方法
布隆過(guò)濾器(Bloom filter)是一種特殊的 Hash Table,能夠以較小的存儲(chǔ)空間較快地判斷出數(shù)據(jù)是否存在。常用于允許一定誤判率的數(shù)據(jù)過(guò)濾及防止緩存擊穿及等場(chǎng)景,本文將以 C# 語(yǔ)言來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的布隆過(guò)濾器,為簡(jiǎn)化說(shuō)明,設(shè)計(jì)得很簡(jiǎn)單,需要的朋友可以參考下2022-06-06

