我在想方设法让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