Вы можете решить эту проблему с помощью пользовательского заголовка.
Пользовательский заголовок можно добавить как часть конечной точки в файл конфигурации клиентского приложения. Затем вы бы сделали свой заголовок каждого клиента другим. Например, в версии ASP.NET:
<endpoint
name="basicHttpEndpoint"
address="http://localhost:8972"
binding="basicHttpBinding"
contract="MySeriveContractLib.IMyService"
>
<headers>
<ClientIdentification>ASP_Client</ClientIdentification>
</headers>
</endpoint>
Тогда служба может проверить значение заголовка следующим образом:
public void MyServiceMethod()
{
var opContext = OperationContext.Current;
var requestContext = opContext.RequestContext;
var headers = requestContext.RequestMessage.Headers;
int headerIndex = headers.FindHeader("ClientIdentification", "");
var clientString = headers.GetHeader<string>(headerIndex);
if clientString=="ASP_Client"
{
// ...
}
else
{
// ...
}
}