Question

Lorsque vous utilisez une liaison HTTP dans WCF, je dois me accorder des autorisations spéciales pour être en mesure de se lier à ce port / chemin. Je comprends c'est parce que WCF accepte le trafic HTTP à travers le http.sys conducteur.

Dans l'ancien temps, nous pourrions un nouveau socket et se lient à un vieux port qui n'a pas été utilisé, sans être un administrateur. NetTcpBinding est encore capable de le faire.

Si je ne me soucie pas de http.sys, est-il un moyen de dire WCF de ne pas l'utiliser, et au lieu de simplement ouvrir une prise régulière ancienne tout en utilisant les liaisons HTTP?

Était-ce utile?

La solution

WCF liaisons HTTP à base dépendent de la classe HttpListener qui est géré wrapper autour de l'API HTTP. HTTP API dépend de la manière dont le processus de système d'exploitation des requêtes http. Donc, si vous utilisez le système d'exploitation que vous dépendent du pilote (Windows 2003 et plus récent) de l'utilise.

Modifier

Sur la base de très bon argument de Cassini I a passé deux heures dans le réflecteur. À la suite de la description est seulement mon hypothèse. Je ne l'ai pas trouvé aucune information à ce sujet peut-être que je suis tout à fait tort.

WCF contient en interne une classe abstraite appelée HttpTransportManager cette classe est dérivée par les classes internes HostedHttpTransportManager et SharedHttpTransportManager (celui-ci existe aussi en version pour HTTPS). L'ancien ne dépend pas de HttpListener mais celui-ci est un. L'ancien est utilisé lorsque WCF est hébergé dans ASP.NET pipeline - les classes internes HttpModule et HttpHandler de System.ServiceModel.Activation utilisent l'ensemble HostedHttpRequestAsyncResult dépendant HostedHttpTransportManager. Celui plus tard est utilisé lorsque HttpChannelListener est créé (auto-hébergement).

Ma conclusion est que le service WCF hébergé dans ASP.NET pipeline n'est pas directement dépendante http.sys mais l'IIS hébergeant le pipeline est. Cela permet de créer serveur Web personnalisé qui ne sera pas dépendant http.sys mais sera en mesure d'hôte ASP.NET et ainsi WCF. Je pense que c'est ce que fait Cassini. 'Autonome service WCF est toujours dépendant http.sys.

Comme je l'ai écrit ci-dessus c'est que je devine basé sur une ingénierie inverse rapide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top