问题标签 [wcf-client]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wcf - 使用 wsdl 生成的 WCF 代理客户端与 ServiceContract、XmlSerializerFormat 属性不匹配
我正在 .net 3.5 框架中开发 WCF 服务,并将它们托管在带有basicHttpBiding的 IIS 5.1 windows xp sp3 中。
使用 .net 2.0 框架开发的服务消费客户端。为此,我使用 WSDL.EXE 生成了代理客户端。此工具生成代理类没有任何问题,但是它为每个属性添加的问题添加了额外的属性"[property]Specified",但是工作正常没有任何问题,只需要在为任何属性赋值时指定"specified = true"
为了删除这个额外的属性,我添加了XmlSerializerFormat属性和ServiceContract属性。WSDL.EXE 生成没有额外属性的类,但它不包括以前包含的某些类。
我需要设置任何属性来生成排除的类吗?
注意:所有合约类都使用DataContract属性,属性使用DataMemeber。
nRk
.net - WCF Http 到 Tcp 代理
我的内部网络上有许多 WCF 服务,这些服务由 IIS 6 使用 basicHttpBinding 托管。有几个现有的应用程序通过使用动态代理“CreateChannel()”方法来使用这些服务。
我正在构建一个在我们的网络之外运行的移动应用程序,它使用蜂窝连接,其中最大限度地减少数据使用很重要,所以我尝试使用 netTcpBinding 而不是任何 http 绑定。
我的想法是构建一个“WCF 代理”,基本上是一个在暴露于外部的服务器上运行的服务,使用 net.tcp 绑定进行侦听,并将请求转换/转发到内部 http 服务。
现在代码很简单,看起来像这样......
我意识到此时这是非常幼稚的代码,它不考虑故障通道等,但请耐心等待。
我遇到的问题是在 fooService(这里是由 wcf 生成的代理)上调用 GetType() 返回 IFooService,而不是代理的类。WCF 在创建新服务主机时不喜欢这样,并且我收到错误“'this' type cannot be an interface itself。” 在最后一行。
这只是一个可怕的想法吗?如果不是,让它运行的最佳方法是什么?我会被迫使用 svcutil 生成的代理吗?
xml - WCF - ASMX - 通信异常
所以我有一个使用 ASMX Web 服务的 WCF 客户端。一切正常,除了异常处理。
在我应该得到(非合同)FaultException 的地方,我得到了 CommunicationException。
可能有什么问题?
相关数据如下:
SOAP 响应(似乎符合规范):
ex.Message(CommunicationException):
ex.InnerException.Message (XmlException) :
wcf - 如何将 MSDN“自托管”WCF 示例从 localhost 移开?
我已经阅读了MSDN WCF - Getting Started Tutorial,它非常棒,直到我尝试将客户端从我域中的一台机器移动到我域中的另一台机器。当我将客户端移到网络中的另一台机器上时,它给了我一个SecurityNegotiationException。这是我所做的:
- 我定义了一个服务合同(参见下面的代码块 1)。
- 我实现了服务合同(参见下面的代码块 2)。
- 我创建了一个主机来运行该服务(参见下面的代码块 3)。
- 跑来
svcutil.exe
生成我的代理类和配置文件(见下面的代码块 4)。 - 将 4 的输出复制到我的客户项目中。
- 我创建了一个客户端来连接到我的主机(参见下面的代码块 5)。
当我在自己的机器(SCOTT)上运行服务和客户端时,它运行良好。当我在我的机器 (SCOTT) 上运行服务并在我的虚拟机 (SCOTT-VM) 上运行客户端时,它会失败并显示以下堆栈跟踪:
(我使用了上面的代码块,以便它可以滚动并很好地格式化。我尝试使用引号,但它不可读。)
对于训练有素的 WCF 用户来说,这个堆栈跟踪可能存在明显的问题,但我看不到问题所在。首先,我想解决这个问题。其次,我想知道任何好的教程和培训材料。 mark_s在他的回答中有一些很棒的链接。我已经压缩了我的源代码供您查看。
谢谢
代码块
代码块 1:
代码块 2:
代码块 3:
代码块 4:
代码块 4 的输出:
app.config:
生成的Proxy.vb:
代码块 5:
wcf - 如何确保 WCF ChannelFactory 使用 xml 配置中的 Binding 设置(忽略 MaxArrayLength)
如何确保 WCF ChannelFactory 使用 xml 配置中的 Binding 设置(忽略 MaxArrayLength)
嗨,我是 Wcf 新手,正在编写我的第一个 Wcf 服务和客户端。我不喜欢使用工具来生成配置;我宁愿自己编写配置。我要解决的问题是客户端通过 netTcp 与服务通信。该服务可能会返回非常大的有效负载(大于默认的 readerQuotas.maxArrayLength)。我最初开发的组件在字节流有效负载相对较低(即小于它认为的默认值约 16K)时工作正常。我可以通过创建绑定并将 MaxArrayLength 设置为足够大的值以编程方式解决此问题。但是,我需要能够在 xml 配置中执行等效操作。
我的 app.config(客户端)是:
创建客户端代理的代码如下:
请注意,代码通过变量“endpointName”链接到配置。
服务端配置(我认为这无关紧要,但为了完整性而包含在内):
当我在服务返回大字节流的场景中运行客户端时,会抛出异常,异常内部的消息是:
发生通信错误:套接字连接被中止。这可能是由于处理您的消息时出错或远程主机超出接收超时,或者是潜在的网络资源问题造成的。本地套接字超时为 '00:00:59.9687494'
(这不是超时,因为错误会立即发生。)
如前所述,我可以通过编程方式解决此问题,如下所示:
这工作正常,但我需要通过配置来进行测试。
我还尝试了以下方法:
但这没有什么区别。
所以我的问题是,为什么当我从包含 MaxArrayLength 设置为合适值的绑定的端点配置创建通道时,会忽略该值?
许多问候。
好的,我找到了解决方案。配置一直在工作。但是,我提供的配置(“unsecureNetTcpBinding”)是我从说明 http 服务的代码示例中找到的(不是我正在设计的 net tcp 服务)。配置的流氓部分是 'security mode="None"' 当我把它拿出来时,它起作用了。如果我更改 readerQuotas maxArrayLength 这将根据我的需要应用。我的代码工作的原因是因为我没有将安全模式设置为无。感谢您的意见和帮助。
wcf - 调试 Wcf 库时 WcfSvcHost.exe 未运行
我有 WCF 库项目,我最近对它进行了一些小的重构,例如更改命名空间并更改它在磁盘上的位置。我还删除了 app.config,因为我认为 app.config 由任何托管 wcf 服务的主机使用。
从那以后,我注意到我不能再像以前那样使用 WcfSvcHost 调试库了。我从 Visual Studio 得到的消息是:
'不能直接启动具有类库输出类型的项目。
为了调试这个项目,将一个可执行项目添加到这个引用库项目的解决方案中。将可执行文件设置为启动项目。
我不想像它说的那样做,因为我以前不需要这样做。请让我知道如何恢复使用 WcfSvcHost 进行调试的能力。在项目设置的调试选项卡上,命令行参数仍设置为:/client:"WcfTestClient.exe"
不知道还有什么可以尝试的,谢谢。
.net - 当 WCF 客户端为同一个合同指定多个终结点时会发生什么?
它会消耗所有这些吗?它会抛出异常吗?
wcf - WCF 服务器方法 - 返回 DataSet 会杀死输出参数
寻找一些集体智慧。这是情况。这是使用 Visual Studio 2008。
我们有一个简单的 WCF 合约,它公开了以下方法:
/li>该方法实现为:
/li>客户端代理由 svcutil 生成,看起来是正确的。
问题:
someStuff
在客户端始终为空。
观察:
- 同样的问题出现在我们的构建机器上。
返回一个字符串而不是 DataSet 使客户端代理接收正确的 out 参数值:
/li>完全删除客户端代理并重新生成它没有帮助。
- 客户端肯定会同时收到 DataSet 和“out”字符串,如其跟踪日志所示:
<ExecuteQueryResponse xmlns="http://tempuri.org/">
<ExecuteQueryResult>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded"></xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"></diffgr:diffgram>
</ExecuteQueryResult>
<someStuff>abc</someStuff>
</ExecuteQueryResponse>
以下是客户端代理生成代码的方式:
/li>- 我们使用 netTcpBinding
为了返回 DataSet 和 out 参数,我们需要做一些特殊的事情吗?有人遇到过类似的事情吗?
谢谢!!!!
c# - 使用 WCF 使用服务并根据绑定配置接收不同的错误
我正在尝试使用 WCF 使用 Intranet Web 服务。我通过VS2008 中的添加服务引用功能添加了对服务的引用。这样做时,系统提示我输入网络凭据以访问我提供的服务,并添加了服务参考。
然后,我编写了一些我预计会失败的代码,因为它没有与服务调用一起传递凭据:
当我使用此代码时,我收到异常:
HTTP 请求未经授权,客户端身份验证方案“协商”。
从服务器收到的身份验证标头是“Basic realm="Kerberos"”。
这是我在使用以下两个代码示例中的任何一个时收到的相同错误。
或者
我的直觉告诉我,我的安全模式配置不正确。根据服务器管理器的说法,我尝试绑定的端点是通过 SSL 查找基本 Http 凭据。在阅读了WCF-BasicHttp 传输属性之后,我相信我应该使用这个配置:
不幸的是,我继续收到同样的错误。
同样,我确信我的麻烦与我的配置问题有关,因为我以前在其他项目中使用过时的Add Web Reference使用此服务。
wcf - 尚未启动时 WCF 服务超时
我有一个自托管的 WCF 服务。当 InstanceContextMode 设置为 PerCall 时,它工作得很好,除了速度很慢。(构造函数很重,所以很有意义)我将 InstanceContextMode 设置为 Single,现在它工作正常,在服务启动后。但是,如果服务仍在启动,我会收到有关未找到端点的错误。当我在 PerCall 模式下运行时,这并没有发生。有什么办法可以让请求等待更长时间以等待服务启动?我尝试在绑定上设置 OpenTimeout、ReceiveTimeout 和 SendTimeout,但无济于事。
这是我的调用代码:
PS。我是 WCF 菜鸟,但我相信你们现在都明白了;)