2011-09-20 72 views
0

我有一個Windows服務(.NET 3.5/C#),它連接到公共互聯網上的外部服務器上的WCF服務。您可以使用WCF連接來獲取您的連接IP地址嗎?

我可以使用該WCF連接來獲取我的計算機的外部IP地址嗎? WCF服務託管在我們的應用程序服務器的IIS內部。我能做些什麼來獲得我的外部IP地址嗎?

+1

對不起,誰有未知IP? Windows服務? –

+0

我的winforms開發者說他不知道如何準確地獲得一個面向公衆的IP,所以我試圖幫助他。特別是:運行Windows服務的計算機,它連接到託管ASP.NET和WCF的中央服務器。 – pearcewg

+1

您是否想要從發送請求的Windows服務中獲取外部IP? – Dmitry

回答

1

如果你在.NET 3.5或4,在你的WCF服務使用此代碼:

using System.ServiceModel; 
using System.ServiceModel.Channels; 

OperationContext context = OperationContext.Current; 
MessageProperties prop = context.IncomingMessageProperties; 
RemoteEndpointMessageProperty endpoint = 
    prop[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty; 
string ip = endpoint.Address; 

來源:Obtaining client IP address in WCF 3.0

+0

-1:他想要的是_server_ IP地址,而不是客戶端地址。 –

+0

+1:不,他沒有。他希望通過連接到運行WCF服務的另一臺服務器來連接客戶端(Windows服務)IP。 –

+0

我錯過了。他想要他的本地機器的地址,因爲這是Windows服務運行的地方。 –

2

我是否可以使用WCF連接,讓我的計算機的外部IP 地址?

如果你想從發送請求的服務中獲得你的外部IP比答案是否定的。它與WCF無關。您的電腦甚至可能沒有外部IP,因爲它可能沒有直接連接到互聯網。外部IP可能屬於您的計算機連接到的router。此外部IP將爲您連接到的WCF服務的visible。因此,該服務可能會讓您知道您的請求來自哪個外部IP(如果您將新的'MyIP'字段添加到數據合同中)。

Your machine -> Request      -> External WCF Service 
Your machine <- Response(your IP is X.X.X.X) <- External WCF Service 

或者你也可以從automation.whatismyip.com

更新基於您的評論廢了:

...我希望他們能夠得到自己的IP地址,併發送 到服務器。

他們不知道他們的外部 IP地址,但server will know所以沒有需要發送的IP。

+0

+1爲automation.whatismyip.com作爲檢索它的最簡單的方法,如。string serverIP = new WebClient()。DownloadString(「http:/ /automation.whatismyip.com/n09230945.asp「); – tonycoupland

相關問題