我在wcf项目中使用后台工作程序来处理异步Web服务。
以下是我正在初始化工人的方式:
worker.DoWork += new DoWorkEventHandler(DoWork);
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(RunWorkerCompleted);
worker.RunWorkerAsync();
为了处理错误,我必须在我的DoWork方法中引发异常......就像这样:
throw new WebFaultException<MyAsyncResult>(
new MyAsyncResult("Description of the error"),
HttpStatusCode.InternalServerError
);
最后,我在RunWorkerCompleted中得到了这个例外:
void RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (!(e.Error == null))
{
< Do something with e.Error >
}
else
...
}
我的问题:
我得到的e.Error似乎不是我提出的orignal Exception!实际上,我无法将其转换为WebFaultException并且它错过了我作为参数传递的'MyAsyncResult'对象。你们有没有这种问题吗?
答案 0 :(得分:1)
您需要将e.Error强制转换为WebFaultException<MyAsyncResult>
!非通用WebFaultException
是另一回事。