问题标签 [wcf-binding]
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.
.net - 最大数组长度配额
我正在编写一个小型 WCF/WPF 应用程序来调整图像大小,但是当我尝试从客户端向我的服务发送大小为 28K 的图像时,WCF 让我很伤心。当我发送较小的图像时,该服务运行良好。我立即认为这是一个配置问题,我在网上搜索了有关绑定配置中 MaxArrayLength 属性的帖子。我已将客户端和服务器上这些设置的限制提高到最大 2147483647,但我仍然收到以下错误:
格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数http://mywebsite.com/services/servicecontracts/2009/01:OriginalImage时出错。InnerException 消息是“反序列化 System.Drawing.Image 类型的对象时出错。读取 XML 数据时已超出最大数组长度配额 (16384)。可以通过更改创建 XML 阅读器时使用的 XmlDictionaryReaderQuotas 对象的 MaxArrayLength 属性来增加此配额。有关更多详细信息,请参阅 InnerException。
我使我的客户端和服务器配置相同,它们如下所示: 服务器:
我的客户端配置如下所示:
似乎无论我将这些值设置为什么,我仍然会收到一条错误消息,说 wcf 无法序列化我的文件,因为它大于 16384。有什么想法吗?
更新:为了我的隐私,userPrincipalName 标签中的电子邮件地址已被更改
c# - 是否可以使 WcfTestClient 为自定义传输通道工作?
目标
我希望能够在我正在设计的托管框架内通过 WCF 托管和连接到 vanilla sockets 服务器。我希望能够使用 WCF 来编码当今必须由套接字程序员手动管理的传输和协议通信。这将使我能够与只公开传统套接字和专有协议的 Linux 服务器守护进程实现最终的互操作性。我现在只对一般使用 WcfTestClient 验证传输通道层感兴趣。我的理解是 WcfTestClient 不支持复杂的服务方法。
有人认为可以使 WcfTestClient 用于自定义传输通道吗? 如果能够通用地使用这个客户端来测试任意数量的自定义传输通道,那就太好了。
概述
我正在努力了解 Windows SDK 中包含的 WCF Udp 示例,通常位于 C:\Program Files\Microsoft SDKs\Windows\v6.1\Samples\WCFSamples\TechnologySamples\Extensibility\Transport\Udp\CS,假设WCFSamples.zip 文件完全从 Samples 目录中提取。
这些是我迄今为止采取的步骤:
(成功):在 Visual Studio 2008 中成功运行解决方案的服务和客户端。
(成功):使用通常位于 C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE 的 WcfTestClient 连接到 MEX 端点
(失败):使用 WcfTestClient 尝试从 ICalculatorContract 或 IDatagramContract 服务合同执行方法。
例如,当我执行 Hello() 方法时,我收到以下错误:
友情留言:
调用服务失败。可能原因:服务离线或无法访问;客户端配置与代理不匹配;现有代理无效。有关更多详细信息,请参阅堆栈跟踪。您可以尝试通过启动新代理、恢复到默认配置或刷新服务来恢复。
错误详情:
带有合同“IDatagramContract”的 ServiceEndpoint 上的 CustomBinding 缺少 TransportBindingElement。每个绑定必须至少有一个从 TransportBindingElement 派生的绑定元素。在 System.ServiceModel.Channels.Binding.EnsureInvariants(String contractName) 在 System.ServiceModel.Description.ServiceEndpoint.EnsureInvariants() 在 System.ServiceModel.Channels.ServiceChannelFactory.BuildChannelFactory(ServiceEndpoint serviceEndpoint) 在 System.ServiceModel.ChannelFactory.CreateFactory()在 System.ServiceModel.ChannelFactory.OnOpening() 在 System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) 在 System.ServiceModel.ChannelFactory.EnsureOpened() 在 System.ServiceModel.ChannelFactory
1.CreateChannel(EndpointAddress address, Uri via) at System.ServiceModel.ChannelFactory
1.CreateChannel() 在 System.ServiceModel.ClientBase1.CreateChannel() at System.ServiceModel.ClientBase
1.CreateChannelInternal() 在 System.ServiceModel.ClientBase`1.get_Channel() 在 DatagramContractClient.Hello()
了解客户端错误
UdpTransport 项目中定义的 UdpTransportBindingElement 肯定来自 TransportBindingElement,如下所示,所以我认为 WcfTestClient 配置文件中一定缺少某些内容和/或可能我必须以某种方式向测试客户端提供更多信息. 我基本上尝试将 Udp 解决方案的客户端项目的 System.ServiceModel 部分复制到 WcfTestClient 的配置文件中,并将传输程序集 dll 复制到与测试客户端相同的文件夹中,但我收到了相同的错误。
我的理解是,MEX 端点应该足以获取在服务上调用简单方法所需的信息。当然,我知道这个故事可能还有更多内容,考虑到我正在尝试让一个旨在测试开箱即用传输通道的客户端与自定义传输通道一起工作。
ITransportPolicyImport 对自定义传输通道重要吗?
我询问 ITransportPolicyImport 是因为它是由 TransportBindingElement 的标准 WCF 派生实现的接口,但 Udp 示例没有实现此接口,我在 Web 搜索或 Safari 上找不到任何有用的东西。它甚至可能不相关。
例如...
示例配置...
服务配置如下所示:
解决方案中的客户端配置如下所示:
c# - 首先是逻辑,然后是 WCF 安全?
我正在开发一个 WCF 服务,该服务将通过 net.tcp 与客户端应用程序的 n 个实例进行通信(由我办公室的另一位程序员开发)。
目前我正在使用 net.tcp 没有任何安全性,因为我觉得在这个阶段设置它是没有必要的,至少在我们接近推出之前不需要。
在开发 WCF 应用程序的过程中,使用没有安全性的标准绑定(在我的例子中是 net.tcp)有什么害处,那么一旦业务逻辑完成,实现所有的安全性要求?我需要注意哪些在实施安全性后可能无法正常工作的事情?
wcf - WCF 绑定
所以,我有一个 WCF 服务,它同时在 net.tcp 和 net.pipe 上进行侦听。我已经生成了一个 WCF 代理客户端,我希望它能够通过 tcp 或命名管道进行连接。我不想要 app.config 中的配置,而是代码中的配置。
WCF 客户端将在运行时获取端点地址,例如“net.tcp://mymachine:10001/MyService”或“net.pipe://localhost/MyService”。我认为它只是使用基于 Uri 方案的正确 NetTcpBinding 或 NetNamedPipeBinding - 但它看起来不是那样的。
我不能只设置代理以采用命名管道或 tcp 绑定,它会根据端点地址选择一个吗?
编辑:好的,所以我嗅探方案并填充绑定:
但我收到连接失败 - “通信对象 System.ServiceModel.Channels.ServiceChannel 无法用于通信,因为它处于故障状态。”
如果将 Binding 更改为 BindingElement,并使用带有 CustomBinding 的 NamedPipeTransportBindingElement、TcpTransportBindingElement 等,它可以工作……但我不确定我是否理解其中的区别。
performance - 如何更改第三方组件的 WCF 绑定?
我有一个使用 WCF 构建的第三方应用程序。它作为 Windows 服务安装,wsHttpBinding
并且basicHttpBinding
默认支持。
有没有办法切换到更优化的绑定,例如tcpBinding
or named pipes
?
我将在同一服务器中使用该服务,因此可以选择命名管道。
我想知道我是否可以通过修改windows服务的.config文件在第三方上做到这一点。
wcf - 有没有同时使用 WCF 和 .NET Remoting 的方法?
由于部署限制,我们无法在客户端(目前)部署 WCF,但希望在服务器端使用它。
我很想知道是否可以在服务器上使用 WCF,但在客户端使用 .NET 远程处理来使用它。在服务器端使用特定的绑定、传输或协议来实现这一点我没有任何问题。
wcf - 如何在不同的服务中重用复杂类型?
我有 2 个单独的 java 服务,它们使用一个完全相同的复杂类型,但将电子邮件对象作为参数,例如:
服务看起来像这样:
emailBasketBallTeam(电子邮件);电子邮件网球队(电子邮件);
有没有一种方法可以为电子邮件对象指定合同,或者以某种方式在不同的服务中重用电子邮件对象,尽管它们位于完全不同的命名空间中?
wcf -
WCF 的 netTcpBinding 中 closeTimeout 的默认值是多少?
WCF 的 netTcpBinding 中 closeTimeout 的默认值是多少?
WCF 的 netTcpBinding 中 closeTimeout 的默认值是多少?
默认值为 1 分钟。
http - WCF 有自己的网络服务器吗?
我只是偶然发现,托管在 Windows 服务中的 WCF 服务不适用于 HTTP 绑定。它似乎实现了自己的 Web 服务器,但我从未在任何地方看到过这种功能,也找不到任何关于 HTTP 侦听器功能的文档(就工作线程等而言)。有人有指针吗?
谢谢
.net - 您如何调试 WCF 问题?
我在使用 WS 绑定的 WCF 服务中遇到了一个奇怪的问题。当我配置它没有会话(安全/可靠)时,它工作得很好,但会话不是这样。例如,当我配置安全性(消息安全性、Windows 凭据)时,我在第 10 次或第 11 次调用后超时。我的服务调用了另一个 WCF 服务,但是这两个服务都配置了相同的绑定参数。
你将如何调试这样的问题?除了打开跟踪和使用 SvcTraceViewer 之外,您还会使用哪些工具?