Используйте порт 443 для самостоятельной службы wcf и IIS одновременно

У меня есть собственная WCF-служба и веб-сайт ASP .Net, которые нужно запускать на одной машине. Я обнаружил, что при запуске самообслуживаемой службы все вызовы на порт 443, предназначенные для IIS (на основе IP и заголовков хостов/SSL-привязок), маршрутизируются в архитектуру WCF, поэтому веб-сайт перестает работать до тех пор, пока сам хостинг. Это эффективно предотвращает способность IIS выполнять свою работу.

Обратите внимание, что IIS по-прежнему отлично работает на других портах, например, на порту 80. Он просто перегружен на порту 443. Не совсем уверен, что это проблема сервера или проблема с кодом/wcf.

После довольно много исследований я смог определить, что одна из конечных точек службы, конечная точка REST, предназначенная для имитации файла crossdomain.xml, была предупреждением IIS. В противном случае все работало так, как ожидалось. Я удалил эту конечную точку и использовал IIS для работы с файлом.



Похоже, что, как вы подозреваете, самообслуживаемая служба перехватывает вызовы на порт 443, прежде чем IIS сможет их забрать. Быстрая проверка журналов IIS должна подтвердить, что это происходит.

Имейте в виду, что хотя вы можете запускать несколько доменов на порту 80, если я правильно помню, вы можете использовать его только на порту 443, поэтому такие вещи, как заголовки хостов, не работают с HTTPS-соединениями. Это также может способствовать вашей проблеме.

Есть ли способ, которым вы могли бы разместить самообслуживаемую службу через IIS? Это может решить эту проблему и снизить административную нагрузку в будущем.

Редактировать следующие комментарии:
Если вы не можете размещать в IIS, тогда, полагая, что я прав, что служба WCF перехватывает запросы на IIS, и это то, что мешает прохождению трафика, тогда вам может потребоваться либо добавить что-то в ваше приложение WCF, либо создать (или найти существующий пример) независимого прокси-сервера для входящего трафика на основе HttpListener и использовать его для определения запросов на обслуживание и соответствующим образом реле. Конечно, этот тип прокси-сервиса также можно использовать для маскировки расширений, чтобы вы могли использовать его для ретрансляции внешнего URL-адреса любого формата на соответствующий внутренний URL-адрес службы. Важно то, что прокси-сервер сидит впереди как WCF, так и IIS в сетевом стеке, поэтому он может перехватывать запросы до того, как их подхватит. Если вы пишете свой собственный, то  [HttpListener](https://msdn.microsoft.com/en-us/library/system.net.httplistener.aspx) , вероятно, будет хорошей отправной точкой.