Странный порт сообщается в WCF для удаленного клиента - PullRequest
1 голос
/ 05 мая 2009

У меня есть служба WCF, размещенная в IIS, которая настроена с помощью привязки WebHttpBinding. Это тот же сервис WCF по умолчанию, который VS2008 создает при создании нового. Единственное, что я сделал, - это разрешил вызывать его из JavaScript.

В тестовом методе GetData (int value) я возвращаю строку, которая отображает IP-адрес, порт и идентификатор пользователя удаленного клиента. Все работает нормально, за исключением того, что я не ожидаю номер порта, который он возвращает. Я ожидаю порт 80, но вместо этого получаю что-то вроде 49353. Ниже приведен метод, который я вызываю.

public string GetData(int value)
    {
        OperationContext context = OperationContext.Current;

        MessageProperties messageProperties = context.IncomingMessageProperties;
        RemoteEndpointMessageProperty endpointProperty = messageProperties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;



        return string.Format("Hello {0}! \r\naddress: {1}\r\nport: {2}\r\nuseragent: {3}", 
            value, endpointProperty.Address, endpointProperty.Port, WebOperationContext.Current.IncomingRequest.UserAgent);
    } 

Как я уже сказал, я вызываю этот метод из JavaScript. IIS настроен на порт 80, поэтому я не уверен, почему сообщается о порте неправильно.

1 Ответ

3 голосов
/ 05 мая 2009

Я думаю, у вас это может быть немного задом наперед. Порт 80 находится там, где вы слушаете, но как только это происходит, он передает его на новый эфемерный порт для обработки этого соединения.

Кроме того, клиент также, вероятно, использует эфемерный порт, чтобы открыть соединение с портом 80. Таким образом, порт клиента, вероятно, имеет некоторый «случайный» номер порта вне типичного «фиксированного» диапазона портов (0-1024). *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...