2015-06-20 42 views
1

我正在執行服務器遷移過程,並且在嘗試在同一個端口上託管WCF應用程序和IIS時遇到問題時間使用相同的IP地址和端口。 (這完美的作品我們的其他服務器上)運行IIS和WCF應用程序偵聽同一端口時發生衝突(443)

新的服務器是Windows 2012 R2標準

它運行IIS 8.5.9600.16384

我試圖創建以前安裝的精確副本,以便我們現有的所有客戶在交換機閃動時(週二)繼續工作。

WCF應用程序作爲Windows服務運行。

當我「開始」網站時,我可以訪問那裏的網絡服務。

如果我停止網站並啓動我的WCF應用程序,則可以訪問我的WCF服務。

如果我然後重新啓動網站,WCF服務停止工作。

基本上,我不能同時工作,但這在以前的服務器上工作得很好。

我錯過了某個地方的設置嗎?

我在聽的是地址...

https://test.banana.com/WebServices/myservice.asmx 

https://test.banana.com/WCFService/mywcf.rem 

*我使用的是虛擬域名,這個例子

**此外,實時服務器有不同的域名,所以這裏沒有衝突。

+0

檢出HTTPS的綁定信息 - 假設IIS/WCF應該運行在兩個不同的DNS名稱指向同一個服務器... –

+0

豐富,你可以有幾個應用程序具有相同的端口,因爲你有不同的DNS每個。檢查你的兩個應用程序是否有有效的DNS。 你說你正在遷移你的服務器,在舊的服務器上這兩個應用程序運行良好?如果是這樣,你只需要修復指向新機器IP的dns,或者你需要爲這兩個應用程序創建一個有效的dns。 –

+0

@AlexeiLevenkov,我編輯了我的問題以顯示DNS名稱。我如何檢出綁定信息? –

回答

0

看來它IS畢竟可能,我現在有它的工作。

基本上,我無法共享IIS和我的WCF服務之間的端口的唯一原因是我在IIS綁定中指定了「主機名」。只要我刪除主機名(我已設置爲test.banana.com),我的兩個服務都開始工作。

我猜這與IP地址/端口和主機名需要匹配端口共享才能正常工作有關。因爲我在IIS中指定了主機名,而不是在WCF中,可能它不能確定它是否是相同的端點(可能並非如此)

1

我不認爲單個端口可以被同一臺機器上的多個進程監聽。操作系統如何知道在哪裏發送網絡請求?

您使用不同的DNS並不重要,因爲DNS過濾/調度發生在HTTPS服務收到GET或POST(或其他)請求之後。在這種情況發生之前,操作系統無法知道該請求應該發送到哪個進程。使用HTTPS使問題變得更復雜,因爲請求使用只有服務知道的證書進行加密,所以操作系統無法讀取請求。

我建議讓IIS託管端口443上的所有服務。它可以使用請求標頭爲多個HTTPS站點引導流量。由於您將證書提供給IIS,因此IIS可以讀取HTTPS請求。您可以在IIS中很好地託管WCF服務。

對於託管服務,IIS比自託管服務更可靠。

+0

我有這個配置在現有的服務器上工作,我只是無法讓它在新的服務器上工作。我無法改變這些服務的託管方式。 WCF應用程序作爲Windows服務運行,它具有附加功能(它不只是託管網絡請求) –

+0

您確定IIS正在偵聽舊計算機上的端口443嗎?您需要比較該機器上所有站點的站點綁定。 –

+0

是的,WCF和IIS都在端口443上進行監聽(請參閱上面的網址) –

相關問題