如何找到使用特定托管web/wcf服务的应用程序列表?
本文关键字:服务 wcf 应用程序 列表 web 何找 | 更新日期: 2023-09-27 18:06:08
我正在处理一项任务,我必须列出调用我们的web/wcf服务的应用程序的数量。
目前我正在查看应用程序文件夹结构,并寻找文件夹"Web References"来列出所有Web服务。
但是这种查找WCF服务的总列表的方法不起作用,因为WCF服务可以通过许多其他方式使用。
有万无一失的方法吗?
方法之一是在服务器上实现您自己的消息检查器,派生自IDispatchMessageInspector,并记录每个请求的IP地址(参见此处的示例)。
如果需要更详细的信息,例如,如果有多个客户端在一台机器上-你需要在你的合同中包括客户身份,然后在自定义报头中发送,或者实现身份验证。但是,当然,这并不能阻止多个客户端使用相同的标识。
您可以在客户端配置中添加自定义头。
<endpoint address="http://localhost:8080"
binding="basicHttpBinding"
contract="CalService.ICalService">
<headers>
<ClientIdentification>Cal1</ClientIdentification>
</headers>
</endpoint>
并使用以下代码
检索 var operationContext = OperationContext.Current;
var requestContext = operationContext .RequestContext;
var headers = requestContext.RequestMessage.Headers;
int headerIndex = headers.FindHeader("ClientIdentification", "");
var clientHeaderString = headers.GetHeader<string>(headerIndex);