从wcf到asmx的错误传播

本文关键字:错误 传播 asmx wcf | 更新日期: 2023-09-27 17:51:08

我有一个web方法(.asmx web service),它使用另一个服务方法(WCF service)。然而,我现在想在我的web方法中根据使用FaultContract<T>从wcf服务抛出的不同类型的自定义异常编写更多的逻辑。如果我将.asmx web服务的目标框架从2.0修改为3,我可能能够实现这一点。X来支持泛型。然而,这是不可取的,因为web服务已经是活动的,并且在客户端被其他遗留应用程序使用。

有人能告诉我如何处理。asmx web方法中的wcf自定义异常吗?只要我能够在我的web方法中识别出wcf故障的类型,我就不会太在意是否有通用异常。

注意:我正在尝试实现一种分阶段退役方法,其中单个.asmx web服务将被其wcf对应项取代。这是为了向涉众证明web服务和wcf服务如何能够共存而不影响业务。

从wcf到asmx的错误传播

因为为了与WCF服务互操作,您被限制在。net2中运行,该服务将不得不使用basicHttpBinding。这是因为basicHttpBinding使用SOAP 1.1与客户端通信,而在。net2中没有SOAP 1.2堆栈。

如果服务定义了错误契约,那么这是因为服务希望向客户端公开强类型异常。

然而,我不知道当一个。net 2.0客户端收到这些信息时,会发生什么,但我怀疑你的客户端会因为某种。net异常而崩溃。如果异常中有什么有用的东西可以用来处理我不知道,你必须自己测试一下。

无论如何,我想不出什么好办法来解决这个问题。希望对你有所帮助。

您可以在config文件中进行一些修改来修复它。考虑以下示例:

 <system.serviceModel>
    <behaviors>
      <endpointBehaviors>
        <behavior name="Tajan.Web.UI.Services.UserServiceAspNetAjaxBehavior">
          <enableWebScript />
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="debug">
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
   </behaviors>
 <services>
      <service behaviorConfiguration="debug" name="YOUR_SERVICE_CLASS">
        <endpoint address="" behaviorConfiguration="YOUR_SERVICE_CLASS_Behavior" binding="webHttpBinding" contract="YOUR_SERVICE_CLASS_INTERFACE" />
      </service>
    </services>
  </system.serviceModel>