我正在开发一个基于win form的3层应用程序,WCF作为我们的服务层。出于不同目的,我们有大约8到10个WCF服务(托管在Windows服务中)。我们有一个要求,管理员应该能够锁定用户进行任何操作,然后才能释放锁定。基本上,目的是对服务或数据库进行任何维护和更新。一种选择是关闭服务。但我们也有不能停止服务的情况,但我们仍然不允许任何需要处理的服务。
我想知道,在WCF中有一种方法或API,我们可以阻止服务来接受任何请求但stil继续运行。
我正在寻找wcf频道级别的某些内容来停止对服务的请求,这些服务可以像管理UI中的API一样进行控制,而不是更改每个服务或方法。希望它能让它更清晰。
谢谢, 摩尼
答案 0 :(得分:1)
您可以让您的服务公开您可以向其发送暂停/恢复消息的管理端点。
或者,您可以设置集中式服务,例如AuthorizationService,并让Windows服务为每次调用调用AuthorizationService以确保允许它。然后,该服务可以基于用户凭证,一天中的时间,管理员的心情或其想要的任何内容来决定是否授予呼叫。我不确定第二种情况是否适用于您的特定情况。
答案 1 :(得分:0)
阻止“任何请求”并未完全正在运行。如果您的意思是某种只读模式,您的应用服务会查询而不是更改,则您必须自己编写代码。您可能能够通过WCF扩展做一些奇特的事情,但我不确定我会亲自打扰 - 我只是在所有的开头检查“是管理标志设置” “做”的方法。或者可能是所有方法,如果这是你的意图。
您将返回调用者可能(或可能不)正常处理的已知错误/异常。如果方法的数量非常重要,那么请确保 - 查看WCF扩展点。我正在考虑“操作行为”,尽管有many extension points。