При подключении к WCF службе вылетает exception, хотя в app.config конфиг явно указан не 80 порт:
An unhandled exception of type 'System.ServiceModel.AddressAlreadyInUseException' occurred in
System.ServiceModel.dll
Additional information: HTTP could not register URL
http://+:80/Temporary_Listen_Addresses/c3e45f68-abf2-4847-95a6-cfd3f512fc54/
because TCP port 80 is being used by another application.
Самое странное, что на одном ПК вылетает exception, а на другом нет. В чем может быть проблема?
app.config клиента :
app.config сервер:
Ответ
Вы используете wsDualHttpBinding. В этом режиме клиент прослушивает некоторый адрес, где ожидает ответы от сервера. И вот этот-то адрес, который в конфиге вы не задавали, и находится на 80м порту по умолчанию!
Используйте атрибут clientBaseAddress для указания обратного адреса на клиенте:
Либо используйте другие способы соединения. Так, netTcpBinding - и без обратного адреса умеет передавать сообщения в обе стороны. Еще где-то в WCF есть поддержка веб-сокетов, но я не помню где.
Теперь почему может быть занят 80й порт на некоторых компьютерах. Скорее всего, это Skype, который использует этот порт по умолчанию:
Но, конечно же, не следует отбрасывать и вариант обычного веб-сервера, Apache, Nginx или Tomcat. А вот IIS с WCF "дружат", поскольку используют один и тот же HTTP.SYS.
Комментариев нет:
Отправить комментарий