0

BasicHttpBinding で WCF を使用して、既存の ASMX サービスを使用しようとしています。SvcUtil を使用して開始し、コントラクト定義インターフェイスと構成をプロジェクトに抽出しただけで、SvcUtil によって生成されたすべての既定の構成値を残しました。以下は私が現在持っているものです:

契約:

<ServiceContract()> _
<XmlSerializerFormat()> _
Public Interface IOrderProcessor

    <OperationContract(Action:="***************/SendOrder", _
                        ReplyAction:="*")> _
    Function SendOrder(ByVal strOrder As String) As String

    <OperationContract(Action:="***************/GetAnswerback", _
                        ReplyAction:="*")> _
    Function GetAnswerback(ByVal strAnswerbackGuid As String) As String

そして設定:

<basicHttpBinding>
    <binding name="OrderProcessor" closeTimeout="00:01:00" openTimeout="00:01:00"
        receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
        bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
        maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
        messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
        useDefaultWebProxy="true">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
          maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <security mode="None">
        <transport clientCredentialType="None" proxyCredentialType="None"
            realm="" />
        <message clientCredentialType="UserName" algorithmSuite="Default" />
      </security>
    </binding>
  </basicHttpBinding>

私が抱えている問題は、asmx サービスによって受信された SendOrder サービスの strOrder のパラメーター値が常に null であることです (私は間違いなく最後に null を提供していません:)

明らかな何かが欠けていますか?これをデバッグするのに適した場所はどこですか?

EDIT SvcUtilへのシリアライザースイッチにXMLSerializerを使用

4

1 に答える 1

1

OK で答えが見つかりました。ServiceContract 属性の Namespace プロパティを見逃していました。おっとっ!! になるはずだった:

<ServiceContract([Namespace]:="***************")> _
<XmlSerializerFormat()> _
Public Interface IOrderProcessor

<OperationContract(Action:="***************/SendOrder", _
                    ReplyAction:="*")> _
Function SendOrder(ByVal strOrder As String) As String

<OperationContract(Action:="***************/GetAnswerback", _
                    ReplyAction:="*")> _
Function GetAnswerback(ByVal strAnswerbackGuid As String) As String

しかし、なぜこれが結果の動作なのですか? つまり、サービスは正常に呼び出されますが、パラメーター値は渡されません... OperationContract 属性の Action プロパティから名前空間が解決されたと思います。

于 2009-10-13T23:01:43.177 に答える