Pregunta

Cuando se utiliza una unión en HTTP de WCF, necesito conceder permisos especiales a mí mismo para ser capaz de unirse a ese puerto / ruta. Entiendo que esto es debido a WCF acepta el tráfico HTTP a través de la controlador http.sys.

En los viejos tiempos, podríamos nuevo una toma de corriente y se unen a cualquier puerto antiguo que no estaba en uso, sin ser un administrador. NetTcpBinding todavía es capaz de hacer esto.

Si no me importa para http.sys, ¿hay una manera de contar WCF no usarlo, y en lugar de simplemente abrir un socket usados ??regularmente sin dejar de utilizar enlaces HTTP?

¿Fue útil?

Solución

encuadernaciones

HTTP de WCF basados ??dependen de la clase HttpListener que es administrado envoltura alrededor de HTTP API. HTTP API depende de la forma en cómo procesar las solicitudes de sistema de operación de http. Así que si se utiliza el sistema de operación, que HTTP.sys usos controlador (Windows 2003 y posteriores) que dependen de ella.

Editar

Sobre la base de muy buena discusión sobre Cassini I pasó dos horas en el reflector. Siguiente descripción es sólo mi suposición. No he encontrado ninguna información al respecto por lo que tal vez estoy totalmente equivocado.

WCF contiene internamente alguna clase abstracta llamada HttpTransportManager esta clase se deriva por clases HostedHttpTransportManager y SharedHttpTransportManager interna (éste también existe en la versión para HTTPS). El anterior no depende de HttpListener pero éste es uno. El anterior se utiliza cuando WCF está instalado en canalización de ASP.NET - clases internas HttpModule y HttpHandler de System.ServiceModel.Activation utilizan ensamblaje HostedHttpRequestAsyncResult depende de HostedHttpTransportManager. El que más adelante se utiliza cuando se crea HttpChannelListener (auto-hosting).

Mi conclusión es que el servicio WCF alojada en la canalización de ASP.NET no es directamente dependiente de http.sys pero el IIS que aloja la tubería es. Esto permite la creación de servidor web personalizado que no va a depender de http.sys pero será capaz de albergar ASP.NET y así WCF. Creo que esto es lo que hace la Cassini. Auto organizadas servicio WCF siempre depende de http.sys.

Como he escrito anteriormente esto es sólo mi adivinar basado en algo de ingeniería inversa rápida.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top