Я создаю свой хост с адресом конечной точки, который он должен использовать, например:
Uri endpointAddress = new Uri("http://127.0.0.1:5555/MyService");
ServiceHost host = new ServiceHost(myServiceType, endpointAddress);
host.AddServiceEndpoint(implementedContract, basicHttpBinding, string.Empty);
, но когда я позже делаю host.Open();
, я получаю исключение "HTTP не может зарегистрировать URL http://+:80/MyService/ потому что TCP-порт 80 используется другим приложением ".Результат тот же, когда я делаю
host.AddServiceEndpoint(implementedContract, basicHttpBinding, endpointAddress);
Почему он пытается что-то сделать с портом 80?Как я могу решить эту проблему?
Обновление Пытаясь предоставить более полный пример кода, я нашел виновника.Я добавил ServiceMetadataBehavior следующим образом:
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.ExternalMetadataLocation = new Uri(this.ExternalMetadataLocation);
smb.HttpGetEnabled = true;
smb.HttpGetUrl = this.RemovePort(this.EndpointAddress);
host.Description.Behaviors.Add(smb());
Похоже, в прошлом мне нужно было удалить порт из URL, чтобы заставить это работать, но теперь именно это и вызывает проблему.
Так что Пратик прав: проблема заключалась в метаданных, и, конечно, проблема с портом 80 в том, что есть некое новое приложение, использующее этот порт.1023 *