我有一个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