您好,试图让我的绑定通过互联网工作。我正在使用 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>
这可以被肥皂消耗,但这个配置我无法用肥皂或 wcftestclient 得到任何响应。
肥皂:致命错误:未捕获的 SoapFault 异常:[WSDL] SOAP-错误:解析 WSDL:无法从“ http://(My External ip):8734/WCF/?wsdl”加载:无法加载外部实体“ http ://(我的外部 ip):8734/WCF/?wsdl"
谢谢你的回答
EDIT1 抱歉错误的配置文件给那些速度足够快的人看:/
编辑2
在我的 wsdl 文件中发现,在底部我<soap:address location="https://dendei:8734/WCF/" />
发现一个应该是一个肥皂连接也需要"https://(my external ip):8734/WCF/"
?
我怎样才能改变这个?在配置文件中?还是在我的程序中?
编辑3
在搜索UseRequestHeadersForMetadataAddressBehavior时偶然发现了这个网站
并且在本地解决了它,所以我可以在我的基地址中有 localhost<add baseAddress="https://localhost:8734/WCF/"/>
它和soap一起工作,所以我也找回了它试图连接的地址
并在网上工作:)
但是使用 UseRequestHeadersForMetadataAddressBehavior 你必须使用 .NET 4.0