Как заставить клиента Silverlight знать IP-адрес пользователя - PullRequest
10 голосов
/ 01 сентября 2009

Я пытаюсь найти способ заставить клиента Silverlight узнать IP-адрес текущего пользователя. Я видел эту информацию аналогичным образом ранее, но в отношении передачи ее обратно на сервер, что отличается от моей цели.

Я пытаюсь написать простое приложение, которое меняет источник MediaElement в зависимости от IP-адреса пользователя. Следовательно, IP-адрес необходим только на стороне клиента.

Есть ли способ узнать IP-адрес без использования веб-службы? Если я должен использовать веб-сервис, какой из них будет хорошо использовать?

Ответы [ 3 ]

6 голосов
/ 26 сентября 2009

Поработав над этим проектом некоторое время, мне кажется, я нашел более простое решение, когда размещался на странице 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 вы можете загрузить значения в словарь ресурсов приложения. Я подробно расскажу обо всем этом в своем блоге: Передайте IP-адрес пользователя в Silverlight в качестве параметра (ПРИМЕЧАНИЕ. Если ссылка на мой веб-сайт на benmccormack.com не указана работать, возможно, вам придется пойти на сайт напрямую и найти его. Я опубликовал статью на 26.09.2009) .

2 голосов
/ 01 сентября 2009

Невозможно получить IP-адрес клиентского компьютера, используя любые механизмы на стороне клиента (javascript, silverlight и т. Д.).

Michale Sync опубликовал интересную статью о том, как извлечь информацию о клиенте из silverlight. silverlight-2-beta1-url-реферер-разрешение-экрана-клиентов-данные-время-и-ip-адрес .

этот подход должен работать .. Но есть и ограничение

Он не сможет получить фактический адрес, если прокси-сервер скрывается эти адреса.

1 голос
/ 01 сентября 2009

В вашем aspx-файле есть кусочек кода, на котором находится элемент управления silverlight

var ip = '<% = Request.UserHostAddress%>'

затем подключите событие onload и установите 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, попробуйте этот сервер Apache:

var ip = '<!--#echo var="REMOTE_ADDR"-->';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...