Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在RunWorkerCompletedEventHandler中获取原始引发的异常_C#_.net_Wcf_Backgroundworker - Fatal编程技术网

C# 在RunWorkerCompletedEventHandler中获取原始引发的异常

C# 在RunWorkerCompletedEventHandler中获取原始引发的异常,c#,.net,wcf,backgroundworker,C#,.net,Wcf,Backgroundworker,我在我的wcf项目中使用后台工作人员来处理异步web服务 以下是我初始化工作进程的方式: worker.DoWork += new DoWorkEventHandler(DoWork); worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(RunWorkerCompleted); worker.RunWorkerAsync(); 要处理错误,我必须在DoWork方法中引发异常。。。像这样: throw new W

我在我的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
);
抛出新的WebFaultException(
新的MyAsyncResult(“错误描述”),
HttpStatusCode.InternalServerError
);
最后,我在RunWorkerCompleted中得到了这个异常:

void RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
    if (!(e.Error == null))
    {
        < Do something with e.Error >
    }
    else
    ...
}
void RunWorkerCompleted(对象发送方,RunWorkerCompletedEventArgs e)
{
如果(!(e.Error==null))
{
<用e.Error做点什么>
}
其他的
...
}
我的问题:


我得到的e.错误似乎不是我提出的原始异常!事实上,我不能将其转换为WebFaultException,它会丢失我作为参数传递的“MyAsyncResult”对象。你们中有人遇到过这种问题吗?

你们需要将e.Error转换成
WebFaultException
!非通用的
WebFaultException
是另一回事。

e.Error
一个
InnerException
?您是否确实检查了e.Error包含的对象类型?@jefferson e.Error为否InnerException@WillDean(即错误为WebFaultException)为false。但是e.Error.GetType().Name给出了“WebFaultException`1”