Определите, какая конечная точка wcf используется на сервере

У меня есть служба wcf, которая предоставляет услугу, используя две конечные точки. Одна конечная точка используется для вызовов веб-службы, а другая - для отдыха.

Есть ли способ определить, с какой конечной точки вызываются функции сервера?

Ответы

Ответ 1

Собственно, вопреки тому, что я думал - на самом деле довольно легко узнать, на какой конечной точке была вызвана услуга. В вашем методе службы добавьте следующие строки кода:

OperationContext oc = OperationContext.Current;

if(oc != null)
{
    string wasCalledOn = oc.EndpointDispatcher.EndpointAddress.Uri.ToString();
}

Но, как я сказал: я бы использовал это очень мудро и "защитно" - не начинайте менять поведение службы на основе того, на какой конечной точке был вызван ваш метод - это будет очень плохой дизайн!

Я пробовал это с несколькими конечными точками SOAP - не на 100% уверен, как будет обрабатываться REST (но, скорее всего, это же или очень похоже) - попробуйте!

Но для ведения журнала это должно работать нормально!

Ответ 2

Снимок из записи в блоге здесь:

Вам просто нужно посмотреть на LocalAddress на канале текущая операция Контекст в Метод:

OperationContext.Current.Channel.LocalAddress