gpt4 book ai didi

c# - soap 客户端从控制台应用程序工作,从 wcf 服务中调用时超时

转载 作者:行者123 更新时间:2023-12-02 04:49:03 24 4
gpt4 key购买 nike

这是交易:我有一个类库,它通过 soap 客户端调用 Web 服务。当从控制台应用程序中调用时,它工作正常。当从由 http 调用调用的 WCF 服务中调用时,我得到一个“EndpointNotFoundException - 没有端点监听 http://blablabla.asmx 可以接受消息。这通常是由不正确的地址或 SOAP 操作引起的......”

app.config 和 web.config 都包含完全相同的客户端配置

所以,这是怎么回事?顺便说一下,WCF 是从 Visual Studio 本地运行的。我尝试调用的 soap 网络服务位于 Internet 上。

这是服务模型配置的样子。它使用基本身份验证,用户和密码在类库的代码中设置:

<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="VocalServerSoap">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Basic" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://pseudourl.asmx"
binding="basicHttpBinding" bindingConfiguration="VocalServerSoap"
contract="VocalWebService.VocalServerSoap" name="VocalServerSoap" />
</client>

architecture

最佳答案

ohhhh.... 沮丧!在我认为我已将其确定为权限问题后(根据我之前的帖子),它恢复为相同的超时行为。

最终都是因为代理....结果是(from msdn):

Applications running as an NT Service or as part of ASP.NET use the Internet Explorer proxy server settings (if available) of the invoking user. These settings may not be available for all service applications.

所以我对从 WCF 服务中调用的 soap 服务的请求根本没有配置代理...因此没有端点异常。

为了克服这个问题,我必须在 soap 客户端绑定(bind)中手动声明代理:

<binding name="VocalServerSoap" proxyAddress="http://<your proxy address>:<proxy port>"
useDefaultWebProxy="false">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Basic" />
</security>
</binding>

那为什么我认为是权限呢?为什么它有时会起作用?好吧,Fiddler 给我带来了真正的困惑......当激活 fiddler 时一切正常,因为所有传出请求都被正确路由到代理,因为 fiddler 使用系统代理。

我简直不敢相信这几乎浪费了我生命中的一天:(

关于c# - soap 客户端从控制台应用程序工作,从 wcf 服务中调用时超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19212060/

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