0

我已经下载并正在试用 WSO2 ESB 并使用 wsHttpBindings 为 WCF 服务设置代理。当我启用了 Soap Tracing 时,一切正常 - 当我关闭它时,我每次都会收到 500 个内部服务器错误。我完全坚持这一点,无法理解为什么会这样。

我尝试设置通过代理和基于 WCF 的代理,但我总是遇到完全相同的问题 - 启用 Soap Tracing 后,一切看起来都很棒并且运行良好。如果我关闭它并且不触摸任何东西,我会收到 500 错误:

System.ServiceModel.ProtocolException: An HTTP Content-Type header is required for SOAP messaging and none was found. ---> System.Net.WebException: The remote server returned an error: (500) Internal Server Error.

我已经用 basicHttpBinding 尝试过,它似乎可以在打开或关闭 Soap Tracing 时正常工作。问题似乎只出在 wsHttpBindings 上。

这是代理的完整来源:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="ContactService"
       transports="http"
       statistics="disable"
       trace="disable"
       startOnLoad="true">
   <target>
      <outSequence>
         <send/>
      </outSequence>
      <endpoint>
         <wsdl service="ContactService"
               port="ContactService_WsHttp"
               uri="http://localhost/Actions/ContactService.svc?singleWsdl"/>
      </endpoint>
   </target>
   <publishWSDL uri="http://localhost/Actions/ContactService.svc?singleWsdl"/>
   <description/>
</proxy>
4

3 回答 3

1

您可以尝试使用您正在使用的代理的 inSequence 吗?

谢谢,1G

于 2013-10-31T16:07:14.823 回答
1

我有同样的问题,这是有问题的代理:

<proxy name="cx.partner.usps.RateV4"
      transports="https http"
      startOnLoad="true"
      trace="disable">
  <description/>
  <target>
     <inSequence>
        <property name="CONTENT_TYPE"
                  value="application/xml"
                  scope="axis2-client"
                  type="STRING"/>
        <property name="FORCE_HTTP_1.0" value="true" scope="axis2"/>
        <log level="full"/>
        <send>
           <endpoint key="partner.usps.prd.endpoint"/>
        </send>
     </inSequence>
     <outSequence>
        <class name="cx.wso2.mediators.addNamespace">
           <property name="soapPartName" value=""/>
           <property name="nsToAdd" value="http://xmlns.usps.com"/>
        </class>
        <send/>
     </outSequence>
  </target>
  <publishWSDL key="conf:/esb-resources/wsdl/usps/RateV4.wsdl">
     <resource location="RateV4.xsd" key="conf:/esb-resources/schema/usps/RateV4.xsd"/>
  </publishWSDL>

这在不跟踪 3.x 的情况下工作,但在迁移到 4.7 后,我必须启用 SOAP 跟踪器。

于 2013-11-18T15:34:37.023 回答
0

试试这个,它对我们有用:

<parameter name="enforceWSAddressing">true</parameter>
于 2017-08-10T17:25:00.733 回答