问题标签 [channelfactory]
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.
c# - WCF 序列化和缓存
我有一个托管在控制台应用程序中的 WCF 服务。我有一个ChannelFactory
调用 WCF 的操作合同。
问题:每当我调用返回值的操作时,似乎返回的值在序列化时被服务缓存在某处。
我正在通过Windows 7下的任务管理器检查服务内存使用情况。当我调用一个不返回任何内容的操作时,内存不会增加,但是当我调用一个返回数据的操作时,内存会增加并且即使在数据返回给客户端。
我的猜测是这是一个序列化缓存问题?!?
wcf - 为动态调用工作流创建自定义通道
我需要创建一个客户通道工厂来调用托管在 IIS 中的 WCF Wrokflow 服务。只有在运行时,我才能知道应该调用哪个工作流以及需要调用哪个方法。任何人都可以提供同样的例子吗?
wcf - 在不使用配置文件和使用默认构造函数实例化代理客户端的情况下配置 WCF
老实说,我不确定这是否可能,
我想知道是否有一种方法可以删除配置文件的使用,而不必覆盖客户端代理的创建。让我举个例子:
在客户端应用程序中,我们有一个 WCF DAL 项目。这是他们的 WCF 服务器的包装器,供客户端应用程序使用。目前,客户端应用程序需要配置文件中给出的所有绑定和端点,并且通常(在我们的项目中)会执行以下操作来包装 WCF 服务:
这将创建对服务器的调用并返回一个对象。如果客户端应用程序没有绑定和端点,它就会崩溃。我们可以更改数据服务客户端的每次创建以创建绑定和端点,或者创建我们自己的通道工厂来为我们执行此操作,但这意味着更改当前的 WCF DAL 层代码。
我的目标是尝试创建一种将进程插入 WCF DAL 层的方法,该方法将处理绑定和端点,而无需更改使用代码,同时无需配置文件。
到目前为止,我的想法是尝试使用 TT 文件,以便它创建数据服务客户端的部分类并覆盖通道工厂部分。这失败了,因为数据服务客户端的构造函数调用直接进入抽象类 (System.ServiceModel.ClientBase<T>) 并尝试获取配置内容。我找不到阻止它通过这个部分类在配置中查找并且不更改 WCF DAL 服务层的方法。
c# - C# WCF 关闭通道并使用函数 Func
这就是重点,我有一个 WCF 服务,它现在正在工作。所以我开始在客户端工作。当应用程序运行时,出现异常:超时。所以我开始阅读,有很多关于如何保持连接活跃的例子,但是,我也发现最好的方法是创建通道,使用它,然后处理它。老实说,我喜欢这样。所以,现在阅读关闭频道的最佳方法,有两个链接可能对任何需要它们的人有用:
在第一个链接中,这是示例:
因此,如果通道不为 null,则关闭、处置并分配 null。但我有一个小问题。在此示例中,通道具有 .Close() 方法,但在我的情况下,智能感知没有显示 Close() 方法。它只存在于工厂对象中。所以我相信我必须写它。但是,在具有合同的接口或实现它的类中?而且,这个方法应该怎么做???。
现在,下一个链接,这有一些我以前没有尝试过的东西。Func<T>
. 而且看了目标之后,还蛮有意思的。它创建了一个函数,使用 lambdas 创建通道、使用它、关闭它并丢弃它。此示例像Using()
语句一样实现该功能。这真的很好,而且是一个很好的改进。但是,我需要一点帮助,老实说,我无法理解这个功能,所以,专家的一点解释将非常有用。这是功能:
这就是使用方式:
是的,我认为它真的非常好,我想了解它以便在我的项目中使用它。
而且,像往常一样,我希望这对很多人都有帮助。
.net - 通过 ChannelFactory 调用 SOAP 服务而不使用 WSDL
我通过 ChannelFactory 调用 SOAP 服务而不使用 WSDL。我将使用该服务的多个版本,并且我试图避免在我的项目/配置文件中包含多个版本的 WSDL。
代码如下:
使用 Fiddler 我看到 SOAP 请求和响应恢复得很好。但是有一个名称空间问题阻止了响应消息的反序列化。
错误消息:反序列化操作“登录”的回复消息正文时出错。OperationFormatter 遇到无效的消息正文。预计会找到名称为“loginResponse”和命名空间“http://tempuri.org/”的节点类型“元素”。找到名称为“ns1:loginResponse”和命名空间“urn:Foo”的节点类型“元素”
如果我更新我的 ServiceContract 以包含这样的命名空间:
错误消息消失了,但该方法现在返回 null 而不是实际值。我再次可以在 Fiddler 中看到 XML,我正在寻找的值在响应中,但它似乎仍然找不到元素 ns1:loginResponse。
问题是如何配置 ChannelFactory 以知道具有给定命名空间的所有元素都将以 ns1: 为前缀?
c# - WCF + Gzip 性能问题
我有一个 WCF 服务,它返回内容类型“application/x-gzip”,它本质上似乎是使用 Gzip 压缩的 XML/Json。我实现了 GzipMessageEncoder 和 CustomBinding,如下面的 Carlos Figueira 链接所述:
http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/8c3eafae-b6a1-441f-85ef-90721d941a1a
对于我的服务返回的数据,我使用带有 JSON 的基本网格概念,它拆分模式并为每一行使用 string[] 以保持紧凑:
Gzip 工作正常,但我认为我的客户端的性能很慢/不一致,使用 ChannelFactory:
这是我启动服务的方式:
当下载 ~512kb 到 ~1mb 的数据(压缩后)时,这些是我在单独的连续测试中的性能结果:
似乎每隔一次调用该服务需要大约 4-5 倍的时间。即使 4000 毫秒似乎只有 512kb 到 1mb 的数据,所以我想知道可能出了什么问题。
例如,如果我使用 [WebGet] 修饰方法从浏览器下载 .gz 文件本身,最多只需要一秒钟,因为我最差的速度是 400-500kb/s。
wcf - 无法让 WCF 配置与 https 一起使用
我已经查看了有关此问题的许多不同问题和回复,但仍然找不到正确的解决方案。我有一个通过代码连接到的网络服务。Web 服务已在开发机器上启动并运行。我正在运行 IIS 7。我可以通过 IE 在 http 和 https 地址连接到我的服务。从代码中我可以访问 http,但是在尝试通过 https 访问时出现错误 404 no endpoint listener。这似乎很简单,但我显然遗漏了一些东西。
SERVER web.config 看起来像:(仅相对部分)
无论我尝试了什么,我似乎都找不到合适的配置来完成这项工作。我没有证书,我只想调用 https 服务而不是 http。任何帮助,将不胜感激!!
谢谢
c# - 使用模拟和通道工厂从 ASP.NET Web 应用程序调用 WCF Web 服务
我在 WCF Web 服务中实现了各种功能,这些功能目前由 Excel 客户端通过本地 COM 可见库使用。我希望在 Web 客户端中实现一些前端功能。我使用设置我的客户端代理
ASP.NET 模拟和 Windows 身份验证一样打开(无匿名)。当 Web 服务和网站托管在同一台服务器上时,不会出现任何问题,并且桌面用户的凭据可以完美地从浏览器传递到网站再到 WCF。但是,当网站和 Web 服务托管在不同的机器上(相同的域,仅限 Intranet)时,我会收到 401 身份验证错误。我究竟做错了什么?
.net - WCF:为什么创建 ChannelFactory 比实际创建通道更消耗
我知道 ChannelFactory 创建了网络连接,并且通道确实在一次通话期间充当了一个连接的锁。有人可以确认,提供一些细节吗?
silverlight - 使用 Channel Factory 在 Silverlight 中捕获故障异常
我正在尝试按照此链接使用通道工厂从 Silverlight 客户端调用 WCF 服务。与渠道工厂合作对我来说是新事物,所以请多多包涵!
文章中提到的一切都很好。但现在我正在尝试实现错误异常,以便我可以在 Silverlight 端捕获实际异常。但由于某种原因,我总是最终会捕获到 CommunicationException 这不符合我的目的。
这是我的服务合同:
服务的捕获块:
具有异步模式的客户端的服务合同:
这是来自客户端的服务调用:
我在服务和客户端应用程序之间共享 DataContract .dll,因此它们指的是相同的数据合同类(类别和故障)
请告诉我我做错了什么?
更新:我确实清楚地看到了 Fiddler 服务发送的故障异常。这让我相信我在客户端遗漏了一些东西。