问题标签 [custom-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.
wcf - 使用 WCF 包装现有的连接流
我有一个双向连接的两端Stream
,我想通过它进行一些通信。流背后的底层实现并不重要,我想在这个Stream
级别上工作......
我不想为流实现我自己的通信协议,而是想使用所有现有的 WCF 优点通过双向(请求/响应 + 回调)WCF 通信通道来包装现有流。
我的问题是,我该怎么做……?
更新:
我已经走上了实现自定义传输的道路。我已经完成了这项工作,但我仍然对此并不完全满意......
我已经实现了一个IDuplexSessionChannel
包装流,以及适当的IChannelFactory
andIChannelListener
和一个用于创建通道工厂的绑定元素。现在,我只是通过连接的流,并最终在创建时将它们传递到传输通道。
因此,我可以创建客户端代理以通过流访问服务,如下所示:
我遇到的问题是,似乎 WCF 设置为使用 aServiceHost
创建通道的服务器端,通过IChannelListener
. 就我而言,我已经有一个连接的流,我将无法再监听任何传入的连接。我可以解决这个问题,但我宁愿不使用 aServiceHost
创建通道的服务器端,因为我最终会得到很多晦涩的样板和黑客来使其工作。
问题
因此,我正在寻找一种更好的方法来获取 IDuplexSessionChannel,并将它们包装到服务器端和客户端的 Channel 代理中。
或者可能是不需要IChannelListener
.
真的,这里的问题是我不想要一个服务器,多个客户端的安排,我的 WCF 服务和客户端之间是 1-1 的关系。是否有正确的方法来实例化其中之一?
换句话说,我想在不使用 ServiceHost 的情况下创建服务器端服务实例。
在此阶段,我们将不胜感激任何建议。
wcf - 配置 WCF 客户端和服务以与 protobuf-net 一起使用
我决定就这个问题提出一个新问题,也许扩展这个问题,因为在互联网上的任何地方都没有找到关于这个问题的准确答案。
我想使用protobuf-net序列化/反序列化我的 WCF 客户端和服务之间交换的消息。该服务在 Windows 服务中自托管。客户端和服务都以编程方式配置,使用非常类似于wsHttpBinding
. 服务参考代码是使用 Visual Studio 中的“添加服务参考”选项生成的。WCF 服务上使用的 ORM 是EntityFramework 4,它的代码是使用EF 4.x POCO Generator 生成的。有关我的服务配置的更多信息可以在我从这里开始的问题中找到(这就是我描述我当前的序列化程序的地方DataContractSerialzizer
)。
我只用一个返回自定义 DTO 列表的服务操作测试了protobuf-net 。这是操作(请注意,我只是将我的代码复制粘贴到这里,可能有一些字段以我的母语命名,而不是英语):
这是OsobaView
类的定义:
当我使用“添加服务参考”来生成参考代码时,我必须使用两种变通方法之一才能让我的客户识别ProtoContract
s 和成员:
- 为 DTO 使用共享程序集(在我的情况下,除了自定义 DTO,这不是一个理想的解决方案,因为我将 EF 生成的 POCO 传递给客户端)
- 使用
ProtoPartialMember
方法
我使用了它们,并且同时使用了protobuf -net的v1和v2,所有解决方案都产生了相似的结果,这让我相信我的客户根本没有反序列化。继续阅读。
让我们考虑一下我使用这种ProtoPartialMember
方法的情况。起初我使用v2。我喜欢ProtoOperationBehavior
可以使用的方式。这是要调用的服务操作:
以下是我如何替换DataContractSerializerOperationBehavior
客户端ProtoOperationBehavior
所需的服务操作:
当然,这里是上面提到的 DTO 的变通实现:
现在,当我从客户端调用此服务操作时,我得到null
. 但提琴手不同意。它清楚地表明,在响应标题中:
...在消息正文中:
然后我想,让我们试试v1。在服务方面,我没有太大变化。我刚刚删除了对v2 .DLL 的引用并将其替换为对v1 .DLL 的引用。在客户端,我不得不删除添加ProtoOperationBehavior
到我的服务操作行为的代码,并添加了以下行:
我启动了它,调用了操作,这次结果不是null
. 这次是空白字段列表。再一次,Fiddler不能同意,因为它又说和之前说的一样。相同的内容长度和相同的消息正文。
这里发生了什么?
PS 如果值得的话,这里是 WCF 配置:
编辑
为了提供更多信息,我已经阅读了那里写的内容,但没有帮助。我删除了 Visual Studio 生成的服务引用并创建了自己的服务引用,共享整个服务合同,但没有任何改变。
wcf - 如何使用代码为 WCF 服务编写自定义绑定?
如何为 WCF 服务编写自定义绑定并将其包含在服务中。我需要用不在配置文件中的代码来做。
如果我编写自定义绑定,那么如何将新绑定包含在我的 WCF 服务中?目前我知道如何在配置中执行此操作,但是如何在代码中执行此操作?或者在创建自定义绑定之后,如何让我的 WCF 服务使用新的绑定?
wcf - WCF 中的自定义消息编码器,支持 ReaderQuotas
在这里找到答案(最后一篇文章):http ://social.msdn.microsoft.com/Forums/eu/wcf/thread/f5c0ea22-1d45-484e-b2c0-e3bc9de20915
我在实现我的自定义 ( TextOrMtomEncoder ) 时遇到了最后一个问题,即 ReaderQuotas 的实现。
我在网上搜索了很多,但我无法弄清楚最后一块拼图。
我有一个类,其中包含我对“BindingElementExtensionElement”和“MessageEncodingBindingElement”的实现。
MessageEncodingBindingElement 实现包含以下内容的覆盖:
我从默认的 .NET MessageEncoding 实现中“借用”了它,例如 TextMessageEncoding。
这必须是正确的实现,因为 MSDN 是这么说的。
从 web.config 加载配置很好,我可以看到我的两个类中的 ReaderQuotas 属性设置正确,但看起来 .NET 没有从我的 MessageEncodingBindingElement 实现中读取 ReaderQuotas 配置。
我的猜测是 .NET 使用 GetProperty 方法来加载配置,因为 MessageVersion 是通过此方法请求的。但问题是,T 永远不会等于 XmlDictionaryReaderQuotas,因此 ReaderQuotas 永远不会开始请求。
我的问题的根源是奇怪的顺便说一句,我正在使用 IIS7.5 的 Windows 7 x64 机器上开发。在我的机器上发布“大”文件(如 100 KB)。但是当我将服务部署到 Windows Server 2008 R2(尝试了 2 个不同的服务器)时,我收到以下错误:
格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数 http://socialproxy.infocaster.net:argument时出错。InnerException 消息是“反序列化 System.Object 类型的对象时出错。读取 XML 数据时已超出最大数组长度配额 (16384)。可以通过更改创建 XML 阅读器时使用的 XmlDictionaryReaderQuotas 对象的 MaxArrayLength 属性来增加此配额。第 1 行,位置 1584.'。有关更多详细信息,请参阅 InnerException。
就像我说的,它可以在我的机器上运行:-/
谁能告诉我如何解决这个问题?
提前谢谢了!
WCF 服务配置:
wcf - 删除 web.config 中子应用程序的自定义绑定元素
我有一个在http://example.com运行的 WCF 服务 (.NET 3.5) 应用程序;它的 web.config 配置为 JSONP 编码:
其中类My.SharePoint.WebServices.JsonpBindingExtension
是应用程序的一部分。
现在,我们正在http://example.com/other-services/上部署另一个 WCF 应用程序,这就是我遇到问题的地方 - 当我尝试调用此服务时,我收到一个错误,它无法加载 My.SharePoint .WebServices 程序集,即使我没有在其他应用程序中使用它。看起来顶级应用程序的 web.config 与此 web.config 合并。
有没有办法jsonpMessageEncoding
在这个子应用程序中删除/取消注册?
我希望做类似的事情:
但是remove
这个配置部分没有。
有任何想法吗?
knockout.js - 如何在使用 Knockout 删除拖动元素时删除
我有两个自定义绑定要拖放,并且有一个需要放入可放置区域的元素列表,但是当发生这种情况时,我需要从源列表中删除拖动的元素,我正在做如下方式,但是当从源列表中删除拖动的元素时,我收到以下错误“无法获取属性'选项'的值:对象为空或未定义”,并且调试器在我的 jquery-ui.1.8.17 中中断.min.js 文件,在这一行var d=a(this).data("draggable").options
。问题出现在拖动绑定中。
这是我的代码:
javascript - 扩展“IF”绑定的淘汰赛自定义绑定
我有以下基于 Ryan Niemeyer 博客的自定义绑定,但我认为它不起作用。div 并没有让他褪色,而是根本不显示。我尝试添加“init”函数,但这并没有解决问题,所以我回到了简单的更新函数,就像 Ryan 在示例中使用的那样。
在 html 中,我执行以下操作:
博文:http ://www.knockmeout.net/2011/07/another-look-at-custom-bindings-for.html
.net - 无法使 HTTPS MEX 端点工作
我一直在尝试将 WCF 配置为与 Azure ACS 一起使用。此 WCF 配置有 2 个错误:
- 它不发布 MEX 端点。
- 它不调用自定义行为扩展。(在我做了一些我不记得的改变后,它就停止了)
这里可能有什么问题?
编辑:进一步的实现细节我有以下行为扩展元素(目前没有被调用)
命名空间和程序集在配置中是正确的。检查令牌验证涉及更多代码,但我认为至少应该发布 MEX 并且应该调用 CreateBehavior() 以便我继续进行。
knockout.js - Bootstrap chechbox 和 Knockout:自定义绑定在模板中不起作用
在 Twitter Bootstrap 中,带有标签的复选框使用如下标记:
标签的剔除标准“文本”绑定不起作用:复选框标记简单地替换为文本。我创建了一个自定义绑定:
它适用于内联模板,
但不适用于命名模板:复选框出现但没有绑定。
有什么帮助吗?
jquery - 在模板中设置自定义绑定,作为自定义绑定的一部分
这个主题有点令人困惑,但这是我想要做的:
我创建了一个 KnockoutJS 自定义绑定来在我的页面上显示一个网格。这很好用,我遵循了网站上的 SimpleGrid 模型。但是,我的一些字段是日期、布尔值等。我想使用自定义绑定来使用 time ago 插件等转换日期。在构建网格之前,我只需在网格中分配自定义绑定。现在我正在使用“可重用”网格绑定,我希望能够传入(作为列定义的一部分)绑定和值的列表,以便在模板中为网格的标题和单元格分配。
这是我页面中的 HTML:
这是 HTML 页面视图模型:
这是我的自定义网格绑定和模板:
是否有捷径可寻?
谢谢