问题标签 [wcf-discovery]

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

wcf - WCF 发现和数据服务 V3

我想为我的 Data Services v3 公开发现端点(TCP 和 UDP),并使服务可以从客户端发现并在另一个应用程序中发现它们。发现的要点是在客户端获取服务端点地址。

我试图调整 Microsoft 为WCF Discovery提供的示例,但到目前为止我未能实现我的目标。我在服务器端创建了一个自定义数据服务主机工厂

客户端,我尝试了以下代码:

不幸的是,这不起作用。我得到InvalidOperationException

尝试获取 DataModel 的合同类型,但该类型不是 ServiceContract,也不继承 ServiceContract。

如果我朝着正确的方向前进,我需要一种方法来表达发现的服务合同的类型。太糟糕了,我不确定它是否会像正常的 WCF 发现一样工作......

请分享您的想法甚至更好的工作解决方案。

0 投票
2 回答
1445 浏览

c# - 将发现添加到我的 WCF 服务

我知道WCF service如何在一台机器上simple comsole application client运行以及谁在另一台机器上运行。服务器做了一些非常简单的事情:一种返回客户端发送的数字 2 的值的方法:

应用程序配置:

我想要做并且发现很难实现,因为我是一个新开发人员,将 Discovery 添加到我的WCF service,假设我在几台机器上安装了几个服务,客户端应用程序是打开的我现在想要哪些服务是活动的\正在运行以及我可以从 Discovery 收到的所有这些数据。我尝试阅读几篇文章,但正如我提到的那样,我不明白如何去做,我希望得到一些帮助。

0 投票
1 回答
271 浏览

wcf - WCF Discovery 仅工作称为 wcf 服务

好的,让我们开始吧。我制作 wcf 服务并通过 Visual Studio 2012 在 IIS 7.5 中发布它。当我使用 WCF 测试客户端时,该服务正在运行并且运行良好。

为了启用 UDP 发现,我对 app.config 进行了一些调整,如下所示:

该文件在发布时也会复制到 web.config。简而言之,wcf 服务本身运行良好。

问题是这样的:我制作了另一个需要在网络上发现 wcf 服务的项目。但该发现仅在第一次调用或手动导航到浏览器中的 .svc 后才有效。当我在 IIS7 管理器中重新启动 IIS 或 wcf 时,发现返回失败/未收到任何响应。似乎 wcf 没有自动启动。我检查了 IIS 配置,它会自动启动。该站点本身也设置为自动启动。我什至根据网络上的一些建议将其中一些行放在 applicationHost.config 中:

还是没用!IIS 说它“已启动”,Site 说它“已启动”,但只有在浏览器中手动调用服务 .svc 文件后,发现仍然有效。当您重新启动服务器或站点时,它又无法正常工作。我相信任何服务都应该在 IIS 启动时启动,但它不会。

我在互联网上发现其他一些人也有同样的问题,但仍然没有解决。

0 投票
0 回答
121 浏览

wcf - WCF 发现在元数据中返回机器名称(无法解析)

所以我有一个托管在 IIS8(Windows Server 2012)中的 WCF 服务。这是配置文件的相关部分:

具有简单绑定和发现端点的简单服务。该服务已启动并运行,一切正常。几乎...

这是我在客户端使用的代码(它只是一个“单元”测试):

代码成功找到了唯一正在运行的服务。输出如下:

地址:http://ws12-iis8/MovieCorner/MovieCornerDalService.svc;合同:http ://tempuri.org/:IMovieCornerDalService

该地址与托管服务的机器名称一起返回。发现后我想使用这样的服务:

实际方法调用抛出异常,内部异常如下:System.Net.WebException: The remote name could not be resolve: 'ws12-iis8'

“单元”测试在我的 PC 中运行,服务托管在 VM 中。我可以通过http://192.168.221.101/MovieCorner/MovieCornerDalService.svc地址访问该服务。但不能用机器名地址。

我错过了什么?我有哪些选择?如何检索服务托管 VM 的实际(私有)IP?我搜索了不同的元数据选项,但我不是网络世界的专业人士,所以我不知道我在寻找什么。

如果您需要更多信息,请告诉我。谢谢你的时间!

0 投票
1 回答
97 浏览

c# - 使用 WCF 发现无法在客户端上发现一项服务中的多个合同

我想开发一个 WCF 服务来支持多个合同。我按照Stackoverflow 上这篇文章的说明设法完成了这项工作。

所以基本上创建一个服务(FooBarService)来实现多个合同(IFooService,IBarService)。

但具有挑战性的事情是,我还想使用 WCF Discovery 使该服务可发现,以便将客户端和服务与端点绑定分离。

在服务方面,我做了这样的事情:

该服务似乎可以工作。

但是在一个只想使用合同 IFooService 的客户端上,当我尝试发现它时,我总是遇到以下错误。

无法发现 contract.IFooService 的端点。要么不存在服务,要么不支持发现。

您认为在这种情况下是否有可能在一项服务中实现可发现的多个合同?

如果是,我该如何根据我现在拥有的代码来做到这一点?

谢谢。