我有一個wcf服務,它具有單向操作並將結果發送回調。這裏是我的服務定義如何通過wcf回調向客戶端拋出異常
[ServiceContract(CallbackContract = typeof(IIrmCallback), SessionMode = SessionMode.Required)]
public interface IFileService
{
[OperationContract(IsOneWay = true, IsInitiating = false, IsTerminating = false)]
[ServiceKnownType(typeof(StatementFile))]
[ServiceKnownType(typeof(InvoiceFile))]
void UploadFile(IFile file);
}
public interface IFileCallback
{
[OperationContract]
void FileProcessed(string result);
}
public MyService : IFileService
{
IFileCallBack callbackchannel;
object result;
public void UploadFile(IFile file)
{
callbackChannel = OperationContext.Current.GetCallbackChannel<IIrmCallback>();
Task.Factory.StartNew(() => ProcessFile(file));
}
private ProcessFile(IFile file)
{
// file gets processed
callbackChannel.FileProcessed(result)
}
}
所以,現在如果在文件處理過程中的一些錯誤是有什麼方法,我可以拋出一個異常給回調來電?
UploadFile是單向操作,我修復了代碼示例,因此引發的故障異常不會到達客戶端。 – Satish
@Satish:s Michael說,你必須在你的void UploadFile(IFile文件)上添加一個[FaultContract(typeof(YourCustomFault))]; –
您無法將FaultContract屬性和OneWay = true屬性一起設置爲 – Satish