问题标签 [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 回答
1429 浏览

c# - 如何在 IIS 上托管 wcf 路由服务?

所以这与我的问题有关

所以我已经运行了一个现有的 wcf 服务,托管在 IIS 上。我创建了一个路由器服务,它将对标头进行一些 XPath 过滤。因此,如果标头匹配,则转到 service1。现在,我在 IIS 上托管了我的路由器服务,我可以像http://iis.com/myrouter/router.svc/一样访问它并给我这个 wsdl 东西。现在,当我尝试在 service1 上请求服务方法时,例如http://iis.com/myrouter/router.svc/general/getMyMethod?blah=blahblah。它给了我一个 404 错误。顺便说一句,我使用了提琴手。

根据我通过提琴手的请求,我添加了自定义标头,例如“service_version:1”。顺便说一句,我使用了一个命名空间,<namespaceTable>但我不知道如何在我的请求中附加它。无论如何,我主要关心的是如何让我的路由器服务在 IIS 上工作?

更新:顺便说一句,我正在使用System.ServiceModel.Routing.RoutingService。所以我想要完成的是路由服务。

非常感谢您的帮助。

0 投票
0 回答
134 浏览

c# - 如何允许 WCF 路由器充当 Web 服务的直接替代品?

假设我目前有一个符合此合同的(实时)WCF Web 服务

这目前按预期工作;Web 客户端使用 AJAX 将参数(作为 JSON 字符串)发布到服务,然后 Web 服务返回 JSON 响应。

但是,我需要破坏即将推出的客户端版本的 API 兼容性,并且我不能保证所有用户都会立即使用客户端的更新版本。

我想做的是以下几点:

  1. 重命名MyWebService为指示它所针对的客户端版本的名称,例如MyWebService_1_0.
  2. 创建一个与IRequestReplyRouter相同的新路由服务,并将其命名 MyWebService为替代现有服务
  3. 在请求的 HTTP 标头中包含一个version标头,以便新的MyWebService 可以确定MyWebService_1_0要路由到的适当的实际服务(在本例中为 )。

从理论上讲,这似乎很简单。我遇到的问题是,每当我尝试创建上述服务时,Ajax 调用就会www.mywebsite.com/MyWebService.svc/VersionCheck/完全失败(请记住,在这种情况下,MyWebService它是一个路由服务,而不是我们开始使用的那个服务)。

我想我的问题是,在这种情况下,我能做些什么来让路由器作为替代品工作?或者,有没有更好的方法来处理这个问题?目前无法进行客户端更新。

0 投票
1 回答
881 浏览

wcf - 具有优先级过滤器的 WCF 路由器

为了准备我的 70-513 考试,我发现了以下问题:

Windows Communication Foundation (WCF) 解决方案使用两个服务来管理购物车。服务 A 处理包含总金额在 0 美元到 500 美元之间的行项目的消息。服务 B 处理包含总金额超过 500 美元的行项目的消息。所有消息对业务逻辑都同等重要。您需要使用 WCF 路由将传入消息路由到适当的服务。您应该将哪两个消息过滤器添加到路由器?(每个正确答案代表解决方案的一部分。选择两个。)

  • A. 一个优先级为 100 的消息过滤器,它将总价值在 0 美元到 500 美元之间的消息转发给服务 A
  • B. 一个优先级为 0 的消息过滤器,它将总价值在 0 美元到 500 美元之间的消息转发给服务 A
  • C. 一个优先级为 0 的消息过滤器,它将所有消息转发给服务 B
  • D. 一个优先级为 100 的消息过滤器,它将所有消息转发到服务 B

答案是 A 和 C。

如果 A 和 C 是答案,那么为什么 B 和 D 也不正确呢?这两对是对称的。

0 投票
1 回答
1277 浏览

url-rewriting - IIS 7.5 Wcf 路由服务。http标头消失

我已经设置了一个 wcf 路由服务 (IIS 7.5) 位于我的 winforms 客户端和后端服务器之间。

我正在尝试解决一个错误,该错误显然是由 http 标头“Accept-Language”的消失引起的。客户端在请求中发送此标头,但根据提琴手(以及我正在观察的行为),从 iis 发出的请求没有“Accept-Language”标头。这会导致服务器发回以 en-US 区域设置而不是客户端指定的区域设置格式的数据。

这个 url上,他们举例说明了如何做我想做的事。这是我基于此所做的配置(我已经在进行 url 重写)。serverVariables 部分应该解决我的问题:

url重写工作正常。我唯一剩下的问题是 http 标头修改。在 IIS 管理器中,我已将 HTTP_ACCEPT_LANGUAGE 设置为 url 重写模块中允许的服务器变量。我错过了什么?

0 投票
1 回答
615 浏览

wcf - 如何使用自定义筛选器更改 WCF 路由器备份列表行为?

我正在尝试找到一种方法来处理 WCF 路由器中的异常,这意味着当由于任何原因路由器无法将消息发送到主端点(这里有 EndpointNotFoundException、ServerTooBusyException 或 CommunicationObjectFaultedException)并从备份列表中选择一个端点时并将此消息发送到备份端点。如何在路由器服务中获取此内部异常?因为此时我想在内存中动态更改路由器配置,并用主端点更改备份端点。是否可以使用 IErrorHandler 执行此操作?还是可以做这个自定义过滤器?如何使用自定义过滤器更改备份行为?

0 投票
2 回答
987 浏览

wcf - 如何测试 WCF 路由服务中的路由?

我们有一个 WCF 路由服务,它(显然)路由到多个 WCF 服务。我们使用 SOAP 消息传递,并且我们的 SOAP 标头包含一个值,供消费者系统设置它的标识符。

您如何测试/证明特定请求被路由到特定 WCF 服务?

场景是:路由器部署有特定的路由配置。然后更新路由器以包含更多服务的新路由,我们如何证明新请求被正确路由并且现有路由保持不变(即仍然正确路由)

我们想到的一种解决方案是让响应使用提供者服务的标识符填充 SOAP 标头,并基于消费者系统执行断言 + 请求应该与提供者系统匹配。

使用 SOAP 标头是最好的方法吗?

0 投票
2 回答
1135 浏览

wcf - 我可以在具有相同命名空间的 IIS 上部署多个 WCF 服务实例吗?

我需要在 IIS 上具有相同站点的多个虚拟目录上部署相同的 WCF 服务。如果我对所有这些实例都有相同的命名空间,这会导致问题吗?

0 投票
0 回答
531 浏览

wcf - 如何以编程方式读取 WCF 路由器上的当前筛选表

我们有一个现有的 wcf 路由器,其配置如下:

我们希望能够查询路由器以询问“给定请求,您将路由到哪个端点?”

有没有办法通过 API 以编程方式执行路由?例如,通过将返回端点名称的路由方法运行请求

0 投票
1 回答
295 浏览

wcf - WCF 路由和各种端点

我有一个小问题,不知道从哪里开始。

我需要提供订阅服务,如果返回订阅后消费者将发送肥皂的唯一地址。它的工作原理是这样的:你在地址http://foo.org/Subscribe上发送一个 SOAP ,作为响应你得到地址http://foo.org/SubscriptionManager/1,下一个消费者将得到http://foo.org /SubscriptionManager/2

我如何通过 WCF 实现它?我猜想 WCF 有类似 ASP.Net Routing 之类的东西,我可以在其中路由 http://foo.org/SubscriptionManager/之类的链接并访问 2 作为参数,但我还没有找到类似的东西。

我期待任何帮助。

0 投票
3 回答
1734 浏览

wcf - WCF 路由和服务元数据

我正在构建一个 WCF 路由器,它需要充当许多内部 Web 服务(WCF 和 ASMX)的代理。路由部分相当简单,但我不明白服务元数据交换在这个解决方案中是如何工作的。

换句话说:客户端如何为路由器后面的内部服务获取元数据?我是否需要手动向消费者提供 WSDL 文件?我可以以某种方式设置路由器以返回适当的内部服务的元数据吗?

或者也许我的架构完全错误?