【问题标题】:Error propagation from wcf to asmx从 wcf 到 asmx 的错误传播
【发布时间】:2014-04-27 02:34:57
【问题描述】:

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

有人可以告诉我如何在 .asmx web 方法中处理 wcf 自定义异常吗?只要我能够在我的 web 方法中识别出 wcf 错误的类型,我就不会对通用异常大惊小怪。

注意:我正在尝试实现分阶段停用方法,其中单个 .asmx Web 服务应替换为其 wcf 对应物。这是为了向利益相关者证明 Web 服务和 wcf 服务如何在不影响业务的情况下共存。希望有意义。

【问题讨论】:

    标签: c# .net web-services wcf exception


    【解决方案1】:

    因为您只能在 .net2 中运行才能与 WCF 服务进行互操作,所以该服务必须使用 basicHttpBinding。这是因为 basicHttpBinding 使用 SOAP 1.1 与客户端通信,而 .net2 中没有 SOAP 1.2 堆栈。

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

    但是,我不确切知道 .net 2.0 客户端在收到这些内容时会发生什么,但我怀疑您的客户端会因某种 .net 异常而崩溃。如果异常中有什么有用的东西可以用来处理我不知道的,你必须自己测试一下。

    无论如何,我想不出什么好办法让它起作用。希望它可以帮助你。

    【讨论】:

    • 感谢您的回复。我收到带有以下堆栈跟踪的“System.Net.WebException”(如果有帮助)。在 System.Net.HttpWebRequest.GetRequestStream(TransportContext& context) 在 System.Net.HttpWebRequest.GetRequestStream() 在 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] 参数)。我知道到目前为止,但没有进一步进行的运气。正如我所说,我不拘泥于任何方法,只要我可以分离异常的类型来控制代码流即可。
    • 对不起@Nair 我没有早点回复你。你解决了吗?
    • 不幸的是还没有。汤姆。
    【解决方案2】:

    您可以在 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>
    

    【讨论】:

    • 对不起,我不知道你在说什么。您能否更具体地详细说明如何将自定义异常从 WCF 互操作到 asmx Web 服务。
    • -1 你的回答没有进一步的解释是没有用的。您是在暗示使用 enableWebScript 吗??
    猜你喜欢
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    相关资源
    最近更新 更多