Определите, какая конечная точка wcf используется на сервере - PullRequest
14 голосов
/ 08 февраля 2011

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

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

Ответы [ 2 ]

15 голосов
/ 08 февраля 2011

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

OperationContext oc = OperationContext.Current;

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

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

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

Но для регистрации это должно работать просто отлично!

1 голос
/ 08 февраля 2011

Поднято из записи в блоге здесь :

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

OperationContext.Current.Channel.LocalAddress
...