Вопрос

При использовании HTTP-привязки в WCF мне необходимо предоставить специальные разрешения, чтобы иметь возможность привязать этот порт / путь. Я понимаю, что это потому, что WCF принимает HTTP Traffic через http.sys. Водитель.

В старых днях мы могли бы получить новую розетку и связываться с любым старым портом, который не использовался, не будучи администратором. NettCPbinding все еще умеет это сделать.

Если мне не волнует http.sys, есть ли способ сказать WCF не использовать его, и вместо этого просто открыть обычный старый сокет, пока все еще используя привязки HTTP?

Это было полезно?

Решение

WCF привязки на основе HTTP зависят от HttpListener Класс, который управляет оберткой по HTTP API. HTTP API зависит от того, как операционная система обрабатывает HTTP-запросы. Поэтому, если вы используете операционную систему, которая использует http.sys водителя (Windows 2003 и новее), вы зависят от него.

Редактировать:

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

WCF внутренне содержит какой-то абстрактный класс HttpTransportManager Этот класс получен внутренними классами HostedHttpTransportManager а также SharedHttpTransportManager (Этот также существует в версии для HTTPS). Первый не зависит от HttpListener Но последний. Первый используется, когда WCF размещен в трубопроводе ASP.NET - внутренние классы HttpModule а также HttpHandler от System.servicemodel.activation assusion HostedHttpRequestAsyncResult зависит от HostedHttpTransportManager. Отказ Чем поздний используется, когда HttpChannelListener создан (самосвязка).

Мой вывод состоит в том, что служба WCF, размещенная в конвейере ASP.NET, не зависит напрямую на http.sys, но, хостинг IIS. Это позволяет создавать пользовательский веб-сервер, который не будет зависеть от http.sys, но сможет разместить ASP.NET и SO WCF. Я думаю, что это то, что делает Кассини. Самоустановленная услуга WCF всегда зависит от http.sys.

Как я написал выше, это только мое предположение, основанное на некоторой быстрой обратной машине.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top