我正在开展一项任务,我必须列出调用我们的web / wcf服务的应用程序数量。
目前我正在查看应用程序文件夹结构,并查找文件夹" Web References"列出所有网络服务。
但是这种查找WCF服务总列表的方法不起作用,因为WCF服务可以通过许多其他方式使用。
这样做是否有一种万无一失的方法?
答案 0 :(得分:1)
其中一种方法是在服务器上实现您自己的消息检查器,派生自 IDispatchMessageInspector,并记录每个请求的IP地址 (参见示例here)。
如果您需要更详细的信息,例如,如果有多个客户端 在一台机器上 - 您需要在客户身份中包含客户身份证明, 并在自定义标头中发送它,或实现身份验证。 但当然,这并不妨碍多个客户端使用相同的身份。
答案 1 :(得分:0)
您可以向客户端配置添加自定义标头。
<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);
另见this。