1

我的应用程序运行具有 2 个不同绑定(每个具有不同接口)的 WCF 服务主机。在某些情况下,我想禁用 1 绑定,以便尝试连接到此接口/端口/绑定名称(无论如何)的客户端不会在那里找到任何东西。

这可能吗,怎么做?

4

3 回答 3

1

继续Dhawalk所说的,您可以抽象出您的业务层,并使用依赖注入,注入具有“不可用”和“功能”实现的服务处理程序。不可用的实现可能只是抛出异常或总是返回错误。

于 2013-03-28T14:22:57.813 回答
0

你将不得不装备你的 BL,并使用 WCF 检查员来回弹 unlicensesd 呼叫。检查员请参考以下链接

http://msdn.microsoft.com/en-us/library/aa717047.aspx

于 2013-03-28T14:08:39.000 回答
0

如果两个服务合同都在同一个服务类上,除了在每个方法的开头添加一个检查“如果我启用......”之外,我看不出你会如何轻松地禁用它。

也许您可以以编程方式查看服务主机的操作合同,有可能一次删除它们。不过,可能必须暂时关闭服务主机才能进行更改。我以这种方式将方法添加到服务合同中,这些方法从未存在于与真实服务类相同的类/接口上,甚至不在同一个程序集中,但我不记得 servicehost 是否已经启动当时。

您需要查看端点: ServiceHost.Description.Endpoints 并选择需要编辑的端点,然后查看 Endpoint.Contract.Operations 以确定要添加/删除的方法。它们将从 WSDL 中消失。

编辑刚刚尝试过,它似乎在运行时工作,但我可以想象重新添加 OperationContracts 会更难(除非你在删除它们之前保存它们......让我知道你是如何开始的,这听起来很有趣!)

于 2013-03-28T13:53:20.277 回答