こんにちは、バインディングをインターネット経由で機能させようとしています。私は 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 を使用する必要があります