从void返回类型的异步方法抛出的FaultException不会返回给客户端

时间:2014-01-28 14:00:22

标签: .net wcf .net-4.5

public async void LogOutUser(string sessionId)
{
   ...
   catch (Exception ex)
   {
       throw new FaultException("Session Unauthorized", CustomFaultCode.SessionUnknownError);
   }
}

上面的代码崩溃了IIS Apppool。但是,下面的代码将FaultException返回给客户端:

public async Task<List<User>> GetUserList(string sessionId)
{
    ...
    catch (Exception ex)
    {
        throw new ServiceFaultException("Invalid SessionID", CustomFaultCode.SharedSessionUnknownError);
    }
}

}

两种方法仅标有[OperationContract]属性。为了测试我正在使用WCFTestClient。

1 个答案:

答案 0 :(得分:0)

尝试从操作返回一个Task,这将允许WCF知道操作成功完成或有错误并将错误传递给客户端:

public async Task LogOutUser(string sessionId)