我很生气并没有IDEA为什么我无法连接到我的WCF !!!
详细说明:
我有一个双工WCF,它成功运行并在我的本地窗口中工作。我在服务器(IIS - server 2008 R2-STANDARD)中托管它,并尝试连接,但是出现错误似乎是一个安全问题,我可以从Web浏览器访问它并获取所有xml ....
在我的客户端中,我正在尝试按以下方式访问它:
this.myCallbackProxy = new MyCallbackProxy();
InstanceContext cntx = new InstanceContext(myCallbackProxy);
this.Proxy = new MyServiceClientProxy(cntx, "WSDualHttpBinding_I_BridgeWCFService");
//我还尝试添加以下内容,而不是
this.Proxy.ClientCredentials.Windows.ClientCredential.UserName = "YY";
this.Proxy.ClientCredentials.Windows.ClientCredential.Password = "PP";
以上传递没有错误或例外。 然后:
try
{
this.Proxy.Open();
}
catch { -> here I get an exception:
例外:
打开的操作未在指定的超时时间内完成 00:00:59.0849477。分配给此操作的时间可能是a 超时的一部分。
我必须提一下,我有另一个WCF托管在同一个IIS(非双工)中,具有相同的用户(服务器用户名),并且它完美无缺。 (我正在使用相同的应用程序轮询,我也尝试创建新的应用程序池。
如果我从我想运行应用程序的机器上浏览Web浏览器中的“http://xx.xx.xx.xx/_Bridge/_BridgeWcfService.svc”链接,我会得到xml ...正如预期的那样
服务和客户都有安全=“无”
任何想法为什么我无法连接:(?
这里是App.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<bindings>
<wsDualHttpBinding>
<binding name="WSDualHttpBinding_I_BridgeWCFService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="2147483646" maxReceivedMessageSize="2147483646"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="2147483646"
maxArrayLength="2147483646" maxBytesPerRead="2147483646" maxNameTableCharCount="2147483646" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"/>
<security mode="None"/>
</binding>
</wsDualHttpBinding>
</bindings>
<client>
<endpoint address="http://xx.xx.xx.xx/_Bridge/_BridgeWcfService.svc"
binding="wsDualHttpBinding"
bindingConfiguration="WSDualHttpBinding_I_BridgeWCFService"
contract="_BridgeWcfServiceReference.I_BridgeWCFService"
name="WSDualHttpBinding_I_BridgeWCFService">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
</client>
</system.serviceModel>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
</startup>
</configuration>
答案 0 :(得分:1)
这听起来像防火墙问题 - wsDualHttpBinding在涉及防火墙时很容易爆炸,因为它试图打开从服务器回到客户端的连接。我建议使用NetTcpBinding进行双工通信。
我在博客上发表了这篇文章here