Страницы

Поиск по вопросам

воскресенье, 8 марта 2020 г.

WCF служба, wsDualHttpBinding и 80 порт

#c_sharp #net #http #wcf


При подключении к 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 сервер:


  
    
  
  
    
      
        
        
        
          
            
          
        
      
    
    
      
        
          
        
      
    
  


    


Ответы

Ответ 1



Вы используете wsDualHttpBinding. В этом режиме клиент прослушивает некоторый адрес, где ожидает ответы от сервера. И вот этот-то адрес, который в конфиге вы не задавали, и находится на 80м порту по умолчанию! Используйте атрибут clientBaseAddress для указания обратного адреса на клиенте: Либо используйте другие способы соединения. Так, netTcpBinding - и без обратного адреса умеет передавать сообщения в обе стороны. Еще где-то в WCF есть поддержка веб-сокетов, но я не помню где. Теперь почему может быть занят 80й порт на некоторых компьютерах. Скорее всего, это Skype, который использует этот порт по умолчанию: Но, конечно же, не следует отбрасывать и вариант обычного веб-сервера, Apache, Nginx или Tomcat. А вот IIS с WCF "дружат", поскольку используют один и тот же HTTP.SYS.

Комментариев нет:

Отправить комментарий