簡體   English   中英

沒有HTTP.SYS的WCF

[英]WCF without HTTP.SYS

在WCF中使用HTTP綁定時,我需要授予自己特殊權限才能綁定到該端口/路徑。 我理解這是因為WCF通過http.sys驅動程序接受HTTP流量。

在過去,我們可以新建一個套接字並綁定到任何未使用的舊端口,而不是管理員。 NetTcpBinding仍然能夠做到這一點。

如果我不關心http.sys,有沒有辦法告訴WCF不要使用它,而只是在仍然使用HTTP綁定時打開一個普通的舊套接字?

基於WCF HTTP的綁定依賴於HttpListener類,它是圍繞HTTP API的托管包裝器。 HTTP API取決於操作系統處理http請求的方式。 因此,如果您使用使用http.sys驅動程序(Windows 2003和更高版本)的操作系統,則依賴於它。

編輯:

根據關於卡西尼的非常好的爭論,我在Reflector花了兩個小時。 以下描述僅是我的假設。 我還沒有找到任何關於它的信息,所以也許我完全錯了。

WCF內部包含一些名為HttpTransportManager抽象類,該類由內部類HostedHttpTransportManagerSharedHttpTransportManager (這一個也存在於HTTPS的版本中)。 前一個不依賴於HttpListener ,而后一個是。 內部類-當WCF托管在ASP.NET管道前者用於HttpModuleHttpHandler從System.ServiceModel.Activation組件中使用HostedHttpRequestAsyncResult依賴HostedHttpTransportManager 在創建HttpChannelListener時使用HttpChannelListener (自托管)。

我的結論是,在ASP.NET管道中托管的WCF服務並不直接依賴於http.sys,而是托管管道的IIS。 這允許創建自定義Web服務器,該服務器不依賴於http.sys,但能夠托管ASP.NET等WCF。 我認為這就是卡西尼所做的。 自托管WCF服務始終依賴於http.sys。

正如我上面所寫,這只是我基於一些快速逆向工程的猜測。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM