问题标签 [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.

0 投票
1 回答
646 浏览

wcf - 使用 WCF 包装现有的连接流

我有一个双向连接的两端Stream,我想通过它进行一些通信。流背后的底层实现并不重要,我想在这个Stream级别上工作......

我不想为流实现我自己的通信协议,而是想使用所有现有的 WCF 优点通过双向(请求/响应 + 回调)WCF 通信通道来包装现有流。

我的问题是,我该怎么做……?

更新:

我已经走上了实现自定义传输的道路。我已经完成了这项工作,但我仍然对此并不完全满意......

我已经实现了一个IDuplexSessionChannel包装流,以及适当的IChannelFactoryandIChannelListener和一个用于创建通道工厂的绑定元素。现在,我只是通过连接的流,并最终在创建时将它们传递到传输通道。

因此,我可以创建客户端代理以通过流访问服务,如下所示:

我遇到的问题是,似乎 WCF 设置为使用 aServiceHost创建通道的服务器端,通过IChannelListener. 就我而言,我已经有一个连接的流,我将无法再监听任何传入的连接。我可以解决这个问题,但我宁愿不使用 aServiceHost创建通道的服务器端,因为我最终会得到很多晦涩的样板和黑客来使其工作。

问题

因此,我正在寻找一种更好的方法来获取 IDuplexSessionChannel,并将它们包装到服务器端和客户端的 Channel 代理中。

或者可能是不需要IChannelListener.

真的,这里的问题是我不想要一个服务器,多个客户端的安排,我的 WCF 服务和客户端之间是 1-1 的关系。是否有正确的方法来实例化其中之一?

换句话说,我想在不使用 ServiceHost 的情况下创建服务器端服务实例。

在此阶段,我们将不胜感激任何建议。

0 投票
1 回答
3540 浏览

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类的定义:

当我使用“添加服务参考”来生成参考代码时,我必须使用两种变通方法之一才能让我的客户识别ProtoContracts 和成员:

  • 为 DTO 使用共享程序集(在我的情况下,除了自定义 DTO,这不是一个理想的解决方案,因为我将 EF 生成的 POCO 传递给客户端)
  • 使用ProtoPartialMember方法

我使用了它们,并且同时使用了protobuf -net的v1v2,所有解决方案都产生了相似的结果,这让我相信我的客户根本没有反序列化。继续阅读。

让我们考虑一下我使用这种ProtoPartialMember方法的情况。起初我使用v2。我喜欢ProtoOperationBehavior可以使用的方式。这是要调用的服务操作:

以下是我如何替换DataContractSerializerOperationBehavior客户ProtoOperationBehavior所需的服务操作:

当然,这里是上面提到的 DTO 的变通实现:

现在,当我从客户端调用此服务操作时,我得到null. 但提琴手不同意。它清楚地表明,在响应标题中:

...在消息正文中:

然后我想,让我们试试v1。在服务方面,我没有太大变化。我刚刚删除了对v2 .DLL 的引用并将其替换为对v1 .DLL 的引用。在客户端,我不得不删除添加ProtoOperationBehavior到我的服务操作行为的代码,并添加了以下行:

我启动了它,调用了操作,这次结果不是null. 这次是空白字段列表。再一次,Fiddler不能同意,因为它又说和之前说的一样。相同的内容长度和相同的消息正文。

这里发生了什么?

PS 如果值得的话,这里是 WCF 配置:

编辑

为了提供更多信息,我已经阅读了那里写的内容,但没有帮助。我删除了 Visual Studio 生成的服务引用并创建了自己的服务引用,共享整个服务合同,但没有任何改变。

0 投票
0 回答
472 浏览

wcf - 如何使用代码为 WCF 服务编写自定义绑定?

如何为 WCF 服务编写自定义绑定并将其包含在服务中。我需要用不在配置文件中的代码来做。

如果我编写自定义绑定,那么如何将新绑定包含在我的 WCF 服务中?目前我知道如何在配置中执行此操作,但是如何在代码中执行此操作?或者在创建自定义绑定之后,如何让我的 WCF 服务使用新的绑定?

0 投票
1 回答
3843 浏览

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 服务配置:

0 投票
1 回答
524 浏览

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这个配置部分没有。

有任何想法吗?

0 投票
2 回答
979 浏览

knockout.js - 如何在使用 Knockout 删除拖动元素时删除

我有两个自定义绑定要拖放,并且有一个需要放入可放置区域的元素列表,但是当发生这种情况时,我需要从源列表中删除拖动的元素,我正在做如下方式,但是当从源列表中删除拖动的元素时,我收到以下错误“无法获取属性'选项'的值:对象为空或未定义”,并且调试器在我的 jquery-ui.1.8.17 中中断.min.js 文件,在这一行var d=a(this).data("draggable").options。问题出现在拖动绑定中。

这是我的代码:

0 投票
1 回答
979 浏览

javascript - 扩展“IF”绑定的淘汰赛自定义绑定

我有以下基于 Ryan Niemeyer 博客的自定义绑定,但我认为它不起作用。div 并没有让他褪色,而是根本不显示。我尝试添加“init”函数,但这并没有解决问题,所以我回到了简单的更新函数,就像 Ryan 在示例中使用的那样。

在 html 中,我执行以下操作:

博文:http ://www.knockmeout.net/2011/07/another-look-at-custom-bindings-for.html

0 投票
0 回答
419 浏览

.net - 无法使 HTTPS MEX 端点工作

我一直在尝试将 WCF 配置为与 Azure ACS 一起使用。此 WCF 配置有 2 个错误:

  1. 它不发布 MEX 端点。
  2. 它不调用自定义行为扩展。(在我做了一些我不记得的改变后,它就停止了)

这里可能有什么问题?

编辑:进一步的实现细节我有以下行为扩展元素(目前没有被调用)

命名空间和程序集在配置中是正确的。检查令牌验证涉及更多代码,但我认为至少应该发布 MEX 并且应该调用 CreateBehavior() 以便我继续进行。

0 投票
1 回答
2463 浏览

knockout.js - Bootstrap chechbox 和 Knockout:自定义绑定在模板中不起作用

在 Twitter Bootstrap 中,带有标签的复选框使用如下标记:

标签的剔除标准“文本”绑定不起作用:复选框标记简单地替换为文本。我创建了一个自定义绑定:

它适用于内联模板,

但不适用于命名模板:复选框出现但没有绑定。

有什么帮助吗?

0 投票
1 回答
242 浏览

jquery - 在模板中设置自定义绑定,作为自定义绑定的一部分

这个主题有点令人困惑,但这是我想要做的:

我创建了一个 KnockoutJS 自定义绑定来在我的页面上显示一个网格。这很好用,我遵循了网站上的 SimpleGrid 模型。但是,我的一些字段是日期、布尔值等。我想使用自定义绑定来使用 time ago 插件等转换日期。在构建网格之前,我只需在网格中分配自定义绑定。现在我正在使用“可重用”网格绑定,我希望能够传入(作为列定义的一部分)绑定和值的列表,以便在模板中为网格的标题和单元格分配。

这是我页面中的 HTML:

这是 HTML 页面视图模型:

这是我的自定义网格绑定和模板:

是否有捷径可寻?

谢谢