问题标签 [wcf-routing]

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 回答
2439 浏览

wcf - WCF 路由消息安全

我正在服务之间构建一些路由功能。原始服务和做路由的服务具有相同的配置;两者都使用具有以下绑定配置的 netTcpBinding:

netTcpBinding

安全模式="消息"

消息 clientCredentialType="用户名"

服务行为使用我们在机器上安装的 AspNet Membership Provider 和客户端证书。

当我关闭消息安全时,它会很好地中继,但是当它打开时,我得到以下异常:

“无法处理消息。这很可能是因为操作 ' http://foo/Whatever ' 不正确,或者因为消息包含无效或过期的安全上下文令牌,或者因为绑定之间不匹配*。安全如果服务由于不活动而中止通道,则上下文令牌将无效。为了防止服务过早中止空闲会话,请增加服务端点绑定的接收超时。(强调我的)

我的想法是证书在消息上运行了两次(一次在原始调用上,然后在中继上),这就是破坏消息安全令牌的原因。

问题:

  1. 我的想法有目标吗?

  2. 有没有办法在没有令牌服务复杂性的情况下继续使用消息安全进行路由?

0 投票
5 回答
2138 浏览

javascript - 如何对托管在不同域上的 WCF 服务进行 JavaScript 调用?

我们正在使用 ASP.NET 和 AJAX 设计一个 Web 应用程序,我们希望在不同的网站上托管我们的 WCF 服务层,并从我们的客户端页面对服务层进行 JavaScript 调用。我们知道浏览器不允许 AJAX 调用到不同的端口或域。构建解决方案的最佳方法是什么?我们正在考虑使用代理层,其服务托管在与具有对服务层的 Web 引用的客户端相同的域上。有更好的解决方案吗?

0 投票
2 回答
1896 浏览

workflow-foundation-4 - 如何(预)启动 xamlx 工作流服务

这个问题有关

我有一个 xamlx 工作流服务,它在运行时从数据库加载其定义的一部分(使用ActivityXamlServices.Load)。原因是我需要版本控制,请参阅相关问题。我将使用 WCF 路由将调用定向到正确的服务。

我动态加载的部分包含一个接收活动。但是,只要工作流未启动,此活动就是“不可见的”,因为我从数据库加载的工作流部分仅在工作流启动时加载。因此,从外部看来,Receive工作流程中似乎没有任何活动。

除了无法为工作流服务生成合同外,我也无法调用该服务。我的第一次尝试是在工作流服务上使用正确的合同进行肥皂调用。但是,在这种情况下,运行时不会自动激活我的工作流程。所以问题是,我如何启动托管在 IIS 中的工作流?

0 投票
1 回答
745 浏览

wcf - 具有可靠会话和回调的 WCF4 路由

我将首先解释我正在尝试做的事情,以及所涉及的环境/情况。

我正在使用已使用 .NET 4 实现的预先存在的 WCF 服务(作为 Windows 服务托管)。该服务利用 net.tcp 和可靠会话,以及对客户端应用程序的回调。WCF 服务和客户端应用程序在同一个网络域(我们将其称为 Domain_A)上运行,并且工作正常。

现存的:

我尝试实现的新功能是路由服务(通过 WCF 4)。将在 Domain_A 上运行的 WCF 服务的相同副本也将在 Domain_B 上运行。net.tcp 和 mex 端点所需的端口已在每个域上的两台计算机之间打开,我能够从相反的域成功访问每个服务的元数据。

我不确定的是,就路由服务请求而言,我应该采取什么路线(架构上)。客户端发出的某些请求只能由 Domain_A 上的服务回复,而其他请求只能由 Domain_B 上的服务回复。目标服务由(或可以)由与每个服务调用一起(从客户端)传递的参数确定。此外,客户端应用程序将仅从 Domain_A 运行。

所需功能:

我的第一个问题:就路由而言(过滤策略、端点/合同类型等),实现上述“所需功能”的最佳途径是什么?我是路由服务的新手,无法找到符合我要求的清晰/简洁的答案或示例。

第二个问题:除了过滤问题,谁能指出一个使用可靠会话和回调的 WCF4 路由服务的示例?除了快速提及 IDuplexSessionRouter 之外,我似乎找不到太多其他内容。如果 IDuplexSessionRouter 端点是要走的路,我一直找不到实现回调的示例。

在此先感谢您提供任何帮助或信息。如果我需要澄清以上任何内容,请告诉我。

0 投票
1 回答
636 浏览

wcf - 服务路由中的参数

在 WCF webhttp 项目上工作,并且对路由组合中的参数有疑问。

我有两个服务 - 项目服务(允许用户添加和查看项目)和一个项目服务,允许用户查看项目内的项目。一个项目中可以有多个项目。

我想要表单的网址

localhost//projects//addproject

localhost//projects//{projectid}//item//additem

localhost//projects//{projectid}//item//getitem//{itemid}

我有两个服务 ItemService 和 ProjectService。Itemservice 有方法 additem 和 getitem Projectservice 有方法 addproject

如何在我的全球路线中声明这些服务?我试过了

RouteTable.Routes.Add(new ServiceRoute("projects/{projectid}/item", new WebServiceHostFactory(), typeof(ItemService))); 这给了我一个错误

我可以将所有代码添加到 ProjectService 但为了代码的可维护性我希望同时拥有 ProjectService 和 ItemService

0 投票
3 回答
1534 浏览

c# - 使用 System.ServiceModel.Routing.RoutingService 与 mex 进行 WCF 4.0 路由

我在 MEX 工作:

什么是最短的 C#/F# 代码(很难理解 XML 配置文件 ^_^")我可以编写以创建一个路由器到它?:

MEX 也应该正确路由,以便客户端可以使用路由器

发现服务方法。

0 投票
1 回答
3708 浏览

routing - WCF 路由服务 IClientMessageInspector --> BeforeSendRequest 未调用

在发送到后端服务之前,我需要为 WCF 路由服务中的每条消息添加 HTTP 标头。我已经实现了下面的类。但是,当我调试“BeforeSendRequest”时没有调用,因此没有添加 HTTP 标头 ic。

我注意到调用了“AfterReceiveRequest”并添加了 HTTP 标头,但发现标头没有发送到后端服务器。

但是,我需要在调用“BeforeSendRequest”时添加,这不会触发。

0 投票
1 回答
651 浏览

wcf - WCF routing backuplists - logging when they are used

Is there anyway to add some logging or a behaviour to the WCF routing list so that I can log when the routing has made use of an endpoint on a backup list?

Could a behaviour somehow log which endpoint had finally been used by the routing service?

0 投票
1 回答
1751 浏览

wcf - WCF 服务行为扩展抛出空引用异常

所以,我正在尝试编写路由服务。这个想法是,每次有人调用路由服务时,WCF 行为扩展都会随机选择端点。我使用了 MSDN 中名为DynamicReconfiguration的稍作修改的示例来实现这一点。我的 web.config 的一部分看起来像这样

以及行为和行为扩展的实现

问题是UpdateRules方法的最后一行抛出NullReferenceException。即使我在行为中附加它,它也找不到这个扩展。在来自 MSDN 的示例中,路由服务托管在控制台应用程序中,并且我尝试将其托管在 IIS 上。我在这里错过了一些东西......

0 投票
2 回答
3050 浏览

wcf - WCF 路由——如何以编程方式正确添加过滤表

我正在使用 WCF 4 路由服务,并且需要以编程方式配置服务(而不是通过配置)。我见过的这样做的例子很少见,创建一个 MessageFilterTable 如下:

但是,该方法的通用参数应该是 TFilterData (您要过滤的数据类型)?我有自己的接受字符串的自定义过滤器——我还能用这种方式创建过滤器表吗?

如果这可行...路由基础架构会在我传入的列表之外创建客户端端点吗?