Domanda

Quando si utilizza un HTTP binding in WCF, ho bisogno di concedere autorizzazioni speciali per me essere in grado di legarsi a quella porta / percorso. Capisco che questo è dovuto al fatto WCF accetta il traffico HTTP attraverso il http.sys del driver.

In passato, abbiamo potuto nuovo una presa di corrente e si legano a qualsiasi porto vecchio che non era in uso, senza essere un amministratore. NetTcpBinding è ancora in grado di fare questo.

Se non mi interessa per Http.sys, c'è un modo per dire WCF non usarlo, e invece di aprire solo una presa vecchia regolare, mentre ancora utilizzando HTTP binding?

È stato utile?

Soluzione

attacchi a base di

??WCF HTTP dipendono classe HttpListener che è gestito wrapper HTTP API. HTTP API dipende da modo in cui le richieste di processo di sistema operativo http. Quindi, se si utilizza sistema operativo che usi Http.sys driver (Windows 2003 e successivi) si sono dipendenti da esso.

Modifica

In base molto buona discussione su Cassini ho passato due ore in Reflector. Descrizione che segue è solo la mia ipotesi. Non ho trovato alcuna informazione su di esso così forse io sono completamente sbagliato.

WCF contiene al suo interno una certa classe astratta chiamata HttpTransportManager questa classe è derivata dalle classi HostedHttpTransportManager interna e SharedHttpTransportManager (questo esiste anche in versione per HTTPS). Quello precedente non dipende HttpListener ma che quest'ultima sia. L'ex uno viene utilizzato quando WCF è ospitato in ASP.NET pipeline - classi interne HttpModule e HttpHandler da System.ServiceModel.Activation assemblaggio utilizzano HostedHttpRequestAsyncResult dipende HostedHttpTransportManager. L'uno più tardi viene utilizzato quando si crea HttpChannelListener (self-hosting).

La mia conclusione è che il servizio WCF ospitato in ASP.NET pipeline è non direttamente dipendente http.sys ma l'IIS ospita il gasdotto è. Questo permette di creare web server personalizzato che non sarà dipendente http.sys ma sarà in grado di ospitare ASP.NET e così WCF. Credo che questo è ciò che fa Cassini. Self hosted servizio WCF dipende sempre http.sys.

Come ho scritto sopra questo è solo il mio indovinare sulla base di alcuni reverse engineering veloce.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top