0

こんにちは、バインディングをインターネット経由で機能させようとしています。私は wsHttpBinding を使用して、それを石鹸で動作させようとしています。私は NetTcpBinding を試し、パブリック IP を使用してインターネット経由で wcftestclient に機能を表示し、ポートを適切なコンピューターに転送しましたが、失敗した機能を呼び出すことができませんでした: ここに画像の説明を入力

そして、石鹸をNetTcpBindingで使用できるとは思わないので、この構成を機能させようとしています

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service
        behaviorConfiguration="VenatoWCF.Behavior"
        name="VenatoWCF.WCFService">
        <endpoint
          address=""
          binding="wsHttpBinding"
          contract="VenatoWCF.IService"
          bindingConfiguration="Binding">
        </endpoint>
        <endpoint
          address="mex"
          binding="mexHttpBinding"
          contract="IMetadataExchange">
        </endpoint>

        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8734/WCF/" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="VenatoWCF.Behavior">
          <serviceMetadata httpGetEnabled="true" />
          <useRequestHeadersForMetadataAddress />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <wsHttpBinding>
        <binding name="Binding" >
          <security mode="Message">
            <transport clientCredentialType="None"/>
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
  </system.serviceModel>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
  </startup>
</configuration>

これは SOAP によって消費される可能性がありますが、この構成は SOAP または wcftestclient で応答を得ることができません。

soap: 致命的なエラー: Uncaught SoapFault 例外: [WSDL] SOAP-ERROR: WSDL の解析: ' http://(My External ip):8734/WCF/?wsdl' から読み込めませんでした: 外部エンティティ " httpの読み込みに失敗しました://(私の外部 IP):8734/WCF/?wsdl"

答えてくれてありがとう

EDIT1申し訳ありませんが、見るのに十分速い人のための間違った設定ファイル:/

EDIT2

私のwsdlファイルで見つけたのは、一番下<soap:address location="https://dendei:8734/WCF/" />にあるのは、石鹸が接続するはずのものであり、そうする必要があるということです"https://(my external ip):8734/WCF/"???

どうすればこれを変更できますか? 設定ファイルで?または私のプログラムで?

EDIT3

UseRequestHeadersForMetadataAddressBehaviorを検索中にこのサイトに遭遇しました

そしてそれはそれをローカルに解決したので、ベースアドレスにローカルホストを持つことができました<add baseAddress="https://localhost:8734/WCF/"/>

それは石鹸で動作したので、接続しようとするアドレスも返されました

そしてネット上で働きました:)

ただし、UseRequestHeadersForMetadataAddressBehavior では .NET 4.0 を使用する必要があります

4

2 に答える 2

0

You error message says that you use this Url http://(My External ip):8734/WCF/?wsdl to connect to your service with WcfTestClient. But you defined a different Url in you config file. Have a look a your baseAddress. Try this Url http://(My External ip):8734/Venato/mex?wsdl

于 2013-01-10T16:20:50.053 に答える
0

4.0 に切り替えてUseRequestHeadersForMetadataAddressBehavior、wsdl ファイルにアクセスし、ローカル アドレスを指す soap:address を変更しようとする代わりに使用すると、問題なく機能します。その方法はまだわかりません。:)

接続の問題は、接続をブロックしたコンピューターのファイアウォールにあり、ルーターは接続を受け入れ、自分のコンピューターはそれをブロックしましたxD

私のために働いた構成で私のクエストを編集します乾杯!

于 2013-01-11T14:56:27.353 に答える