2016-03-25 9 views
0

リモートASMX Webサービスへのサービス参照生成プロキシを含むライブラリがあります。私は、ASP.NETアプリケーションからそのプロキシのメソッドを呼び出すしようとすると、私は次のエラーを取得する:ASP.NETアプリケーションから呼び出されたWCFクライアントメソッドが返されません。

System.ServiceModel.EndpointNotFoundException: There was no endpoint listening at https://domain.com/path/to/the.asmx that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details. ---> System.Net.WebException: The remote server returned an error: (404) Not Found.

しかし、私は、単純なコンソールアプリケーションから同じ方法がbinフォルダにドロップさ(したがって、呼び出す場合まったく同じライブラリを参照しています)、動作します。トレースはそれ以上の有用な情報を明らかにしなかった

<system.serviceModel> 
    <bindings> 
     <customBinding> 
      <binding name="ServicesSoap12"> 
       <textMessageEncoding messageVersion="Soap12" /> 
       <httpsTransport /> 
      </binding> 
     </customBinding> 
    </bindings> 
    <client> 
     <endpoint address="https://domain.com/path/to/the.asmx" 
      binding="customBinding" bindingConfiguration="ServicesSoap12" 
      contract="TheContract" name="ServicesSoap12" /> 
    </client> 
</system.serviceModel> 

:私は、web.configファイルとコンソールアプリケーションのapp.configを内の同じ、シンプルな構成となっています。 ASMXエンドポイントは確実に利用可能です。何が原因でこの現象が発生する可能性がありますか?

答えて

0

これはパラメータの問題であることが判明しました。私の生産コードは、オプションの文字列パラメータのためにnullを渡していましたが、私のテストコードはguidを渡していました。このパラメータは契約の中ではオプションです。なぜそれが404を引き起こしたのか理解できませんが、nullを渡すことで問題を一貫して再現できます。

次のように契約のパラメータが定義されています

<s:element minOccurs="0" maxOccurs="1" name="userdef1" type="s:string"/> 

404エラーは最初から私を投げました。テストコードを正確にのように書くことは、動作しないコードのように思い出させてください。

関連する問題