禁用WCF绑定

本文关键字:绑定 WCF 禁用 | 更新日期: 2023-09-27 18:06:12

我的应用程序运行一个具有2个不同绑定(每个绑定具有不同接口)的WCF服务主机。在某些情况下,我想禁用1绑定,这样客户端试图连接到这个接口/端口/binding-name(无论什么),在那里找不到任何东西。

这是可能的吗?

禁用WCF绑定

按照Dhawalk所说的,你可以抽象出你的业务层,并使用依赖注入,向服务处理程序注入"不可用"answers"功能"的实现。不可用的实现可能只是抛出异常或总是返回错误。

如果两个服务契约都在同一个服务类上,我不知道你怎么能很容易地禁用它,除了添加一个检查'If I am enabled…,

也许您可以编程地查看服务主机的操作契约,也许可以一次删除一个。但是,可能需要暂时关闭服务主机才能进行更改。我以这种方式为服务契约添加了方法,这些方法与实际的服务类/接口不存在于同一个类/接口中,甚至不在同一个程序集中,但我不记得当时servicehost是否已经启动。

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

EDIT只是尝试了这个,它似乎在运行时工作,但我可以想象它会更难添加OperationContracts回来(除非你保存它们之前你删除它们…让我知道你进展如何,听起来很有趣!

您必须设置您的BL,并使用WCF检查器来反弹未经许可的调用。请参考以下链接查看检查员

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