gpt4 book ai didi

wcf - 浏览器连接到 WCF 服务,但不连接到我的 WCF 客户端。可能是什么原因?

转载 作者:行者123 更新时间:2023-12-01 18:27:55 24 4
gpt4 key购买 nike

在生产服务器 (Windows Server 2003 SP2) 上,我可以使用 Internet Explorer 8 连接到远程 WCF 服务:当我浏览到 URL http://www.domain.com/Service.svc 时(我的服务监听的地方)我得到了显示的服务的预期信息页面。 Internet Explorer 中的连接设置仅指定“自动检测”,代理设置被禁用。

如果我在同一台服务器上启动一个控制台应用程序(在 .NET 4.0 中使用 WCF 构建),该应用程序也尝试连接到同一个 WCF 服务,它会失败告诉我没有端点可用于监听 http://www.domain.com/Service.svc .

WCF客户端的配置:

<configuration>
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_IMyService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false"
hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="8192"
maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="None">
<transport clientCredentialType="Windows" proxyCredentialType="None"
realm="" />
<message clientCredentialType="Windows" negotiateServiceCredential="true"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://www.domain.com/Service.svc"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IMyService"
contract="Service.IMyService" name="WSHttpBinding_IMyService" />
</client>
</system.serviceModel>
<configuration>

通过这些设置,我可以从我的开发计算机与远程服务成功通信。

查看其他选项后,我发现可以指定使用 Internet Explorer 代理设置:

<system.net>
<defaultProxy>
<proxy usesystemdefault="true" />
</defaultProxy>
</system.net>

它不起作用,我不确定我是否真的正确理解了这个设置。 (我希望 WCF 客户端能够采用 Internet Explorer 的“自动检测”设置,然后像安装的 IE 一样以相同的方式连接到服务。)

我还在绑定(bind)配置中的 useDefaultWebProxy 设置之间切换了 true 和 false,但没有成功。

现在我正在寻求帮助,我能做什么?哪些设置可能错误或丢失?我可以测试什么以及如何获得更详细的错误消息以更好地识别问题?

提前谢谢您!

编辑:

Innerexception 中的堆栈表示:

  • System.Net.WebException:无法建立与远程服务器的连接
  • System.Net.Sockets.SocketException:由于主机在一定时间范围内没有应答而导致连接失败,或者由于连接的主机没有应答而导致连接故障。

最佳答案

虽然 Internet Explorer 可以在不指定代理地址的情况下连接到服务,但仅启用“自动检测”功能,但在设置 <proxy usesystemdefault="true" /> 时,这似乎不适用于我的 WCF 客户端。 。 (文档说:这将拾取 Internet Explorer 设置。但它不起作用。)最后,客户给了我一个具体的代理地址,我按以下方式更改了客户端配置中的绑定(bind):

  • 已更改:useDefaultWebProxy="false" (而不是true)
  • 已添加:proxyAddress="http://10.20.30.40:8080" (编辑2:不仅仅是IP地址!带有http://的前缀很重要!否则会抛出新的异常,请参阅下面的后续问题。)

这样,WebException 和 SocketConnection 消失了,客户端似乎连接到了服务,但在调用第一个服务操作时,我现在遇到了下一个问题。我会将其放在一个新问题中。

编辑:这是后续问题:

Strange exception when connecting to a WCF service via a proxy server

Edit2:根据后续问题的答案,添加前缀 proxyAddress 很重要与 http 。 (现在改变我的答案)

关于wcf - 浏览器连接到 WCF 服务,但不连接到我的 WCF 客户端。可能是什么原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3041652/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com