我在想方設法讓Silverlight客戶端知道當前用戶的IP地址。我之前也曾經見過類似的信息,但是關於將它傳遞迴服務器,這與我的目的不同。如何使Silverlight客戶端知道用戶的IP地址
我想寫一個簡單的應用程序,根據用戶的IP地址更改MediaElement的來源。因此,僅在客戶端需要IP地址。
有沒有辦法找到不使用web服務的IP地址?如果我必須使用web服務,哪一個會很好用?
我在想方設法讓Silverlight客戶端知道當前用戶的IP地址。我之前也曾經見過類似的信息,但是關於將它傳遞迴服務器,這與我的目的不同。如何使Silverlight客戶端知道用戶的IP地址
我想寫一個簡單的應用程序,根據用戶的IP地址更改MediaElement的來源。因此,僅在客戶端需要IP地址。
有沒有辦法找到不使用web服務的IP地址?如果我必須使用web服務,哪一個會很好用?
在這個項目上工作了一段時間後,我想我在ASP.net頁面中找到了一個更簡單的解決方案。
<body>
<form id="form1" runat="server" style="height:100%">
<div id="silverlightControlHost">
<object id="SilverlightPlugin" data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="ClientBin/VideoPlayer.xap"/>
<param name="onload" value="onload" />
<param name="initParams" value="txtUserIP=<%=Request.UserHostAddress %>,cc=true,m=/relative"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="3.0.40624.0" />
<param name="autoUpgrade" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object>
</div>
</form>
</body>
我更喜歡使用initParams在與ASP <%=Request
...直接在代碼比使用JavaScript搞亂修改Silverlight應用程序內的控制。將它傳遞到InitParams後,您可以將這些值加載到應用程序的資源字典中。我在我的博客文章中詳細介紹了所有這些內容:Pass the IP Address of a User to Silverlight as a Parameter(注意:如果在我的網站benmccormack.com的鏈接不起作用,您可能需要直接訪問網站並找到它。 - 9/26/2009)。
有代碼AA PICE主辦Silverlight控件
VAR IP = '<%= Request.UserHostAddress%>'
然後聯播onload事件的aspx文件和IP設置爲你的Silverlight類
function onload() {
control = document.getElementById(
'SilverlightPlugin'
);
iptextblock = control.Content.FindName("txtIP");
iptextblock.Text = ip;
}
<object id="SilverlightPlugin" data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="ClientBin/SilverlightApplication1.xap"/>
<param name="onload" value="onload" />
如果你的Silverlight主頁在Apache的託管您嘗試thisan Apache服務器:
var ip = '<!--#echo var="REMOTE_ADDR"-->';
我學會了將變量傳遞給Silverlight應用程序。我不得不在我的XAML中添加一個
您是否在調試我們的應用程序嘗試在另一臺機器上託管應用程序,而不是您正在訪問的應用程序的其他機器 – rravuri 2009-09-01 15:20:18
感謝您的建議。我只是通過在工作PC上的IIS上託管它來嘗試這種方式。我實際上得到了更好的結果。它顯示了「防火牆後面的IP」地址,但我認爲這可以滿足我的需求。當我通過VPN訪問時,我得到了我的VPN客戶端地址。從我的工作電腦上,我得到我的內部IP。涼。我應該可以用這個工作。非常感謝! – 2009-09-01 15:25:20
你不能得到客戶端機器的IP地址使用任何客戶端機械(javascript,silverlight等)。
Michale Sync發佈了一篇有趣的文章,介紹如何從Silverlight中檢索客戶端信息.. silverlight-2-beta1-url-referrer-screen-resolution-clients-data-time-and-ip-address。
這種計算策略應該工作。但是也有限制
它將無法獲得實際 地址,如果代理服務器是隱藏 這些地址。
要添加到此答案,您可以在'App.xaml.cs'的'Application_Startup'方法中找到Silverlight中的變量。InitParams [「txtUserIP」]' – Rachel 2012-09-21 17:58:25
我該如何使用html頁面來代替asp.net? – nhenrique 2014-01-07 11:14:52