Web services 企业库异常处理和异步回调

Web services 企业库异常处理和异步回调,web-services,asynchronous,exception-handling,callback,enterprise-library,Web Services,Asynchronous,Exception Handling,Callback,Enterprise Library,我正在运行一个小型控制台应用程序,它可以异步调用一些web服务。正如您所知,这涉及在异步方法完成后调用回调方法 此应用程序以前正在执行同步调用,并使用EntLib 5.0将异常处理策略应用于所有应用程序。电话很简单: ExceptionManager em = EnterpriseLibraryContainer.Current.GetInstance<ExceptionManager>(); try {

我正在运行一个小型控制台应用程序,它可以异步调用一些web服务。正如您所知,这涉及在异步方法完成后调用回调方法

此应用程序以前正在执行同步调用,并使用EntLib 5.0将异常处理策略应用于所有应用程序。电话很简单:

            ExceptionManager em = EnterpriseLibraryContainer.Current.GetInstance<ExceptionManager>();
            try
            {
                // Call main work method
            }
            catch (Exception ex)
            {
                em.HandleException(ex, "Main Policy");
                WriteErrorToConsole(ex);
            }
ExceptionManager em=EnterpriseLibraryContainer.Current.GetInstance();
尝试
{
//调用主要工作方法
}
捕获(例外情况除外)
{
em.HandleException(例如,“主保单”);
WriteErrorToConsole(ex);
}
很好,简洁,在一个地方。但是现在我有一个异步回调,它不在同一个堆栈中


为了实现一致的错误处理,是否需要在回调方法中重复此模式?如果我有多个异步调用和回调方法,我是否必须在每个方法中都这样做,或者是否有某种方法将EntLib错误处理策略应用于所有方法?

您使用的是.NET 3.5、4.0还是4.5?如果在4.5上,async/await应该让您可以相当自然地编写它。如果不是的话,还有一些想法要做。@ChrisTavares我正在使用4.0。@ChrisTavares你能给我指出一个好的方向吗?我有一些东西正在工作(在回调方法中使用ExceptionManager),但是如果回调出现问题,我现在需要向主应用发出信号。我可以想象一个解决方案,但代码开始变得a)复杂,b)脆弱。@AnnL我认为EHAB中对异步操作的任何支持都不能满足向应用程序传达某个故障的需要,因为如何发生的详细信息是特定于您的应用程序的。不过,它可以做的是包装特定于应用程序的回调,这样就不必编写样板代码。顺便说一句,中描述了使用EHAB的完整模式,其中包括重新过滤检查。