2009-09-01 7 views
10

मैं सिल्वरलाइट क्लाइंट को वर्तमान उपयोगकर्ता के आईपी पते से अवगत होने के लिए एक तरीका जानने का प्रयास कर रहा हूं। मैंने इस जानकारी को पहले इसी तरह देखा है, लेकिन सर्वर पर वापस जाने के संदर्भ में, जो मेरे उद्देश्य से अलग है।सिल्वरलाइट क्लाइंट को उपयोगकर्ता के आईपी पते के बारे में जागरूक बनाने के लिए कैसे करें

मैं एक साधारण ऐप लिखने की कोशिश कर रहा हूं जो उपयोगकर्ता के आईपी पते के आधार पर MediaElement के स्रोत को बदलता है। इसलिए, आईपी पता केवल ग्राहक पक्ष की जरूरत है।

क्या कोई webservice का उपयोग किए बिना आईपी पता खोजने का कोई तरीका है? अगर मुझे एक webservice का उपयोग करना चाहिए, तो कौन सा उपयोग करने के लिए अच्छा होगा?

उत्तर

6

थोड़ी देर के लिए इस परियोजना पर काम करने के बाद, मुझे लगता है कि एक एएसपीनेट पृष्ठ के भीतर होस्ट किए जाने पर मुझे एक आसान समाधान मिला।

<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> 

मैं बहुत एएसपी <%=Request साथ initParams का उपयोग करना पसंद ... जावास्क्रिप्ट के साथ खिलवाड़ सिल्वरलाइट अनुप्रयोग के भीतर एक नियंत्रण को संशोधित करने से कोड में सीधे। इनिटपैम्स में इसे पास करने के बाद, आप मूल्यों को एप्लिकेशन के संसाधन शब्दकोश में लोड कर सकते हैं। मैं अपने ब्लॉग पोस्ट पर इन सबके बारे में विस्तार से जाता हूं: Pass the IP Address of a User to Silverlight as a Parameter(नोट: यदि benmccormack.com पर मेरी वेबसाइट का लिंक काम नहीं करता है, तो आपको सीधे साइट पर जाना होगा और इसे ढूंढना होगा। मैंने लिखा है 9/26/2009 को)

+2

इस उत्तर में जोड़ने के लिए, आप 'e. में 'App.xaml.cs' की' Application_Startup' विधि 'में सिल्वरलाइट में चर पा सकते हैं।InitParams ["txtUserIP"] ' – Rachel

+0

मैं asp.net की बजाय HTML पृष्ठ का उपयोग करके यह कैसे कर सकता हूं? – nhenrique

1

अपने aspx फ़ाइल Silverlight नियंत्रण की मेजबानी

वर आईपी = '<% = Request.UserHostAddress%>'

तो जोड़ने का काम ऑनलोड घटना में कोड की आ पैसा है और अपने Silverlight वर्ग के लिए आईपी सेट

var ip = '<!--#echo var="REMOTE_ADDR"-->'; 
:

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 मेजबान पेज अपाचे में होस्ट किया गया है अगर आप thisan अपाचे सर्वर की कोशिश

+0

मैंने सिल्वरलाइट ऐप में एक वैरिएबल पास करना सीखा। मुझे अपने एक्सएएमएल में आईपी एड्रेस डालने के लिए एक जगह रखने के लिए एक तत्व जोड़ना पड़ा। हालांकि, यह केवल 127.0.0.1 लौटा। –

+0

क्या आप हमारे ऐप को डिबग कर रहे हैं ऐप को किसी अन्य मशीन पर होस्ट करने का प्रयास करें, जिसे आप इसे – rravuri

+0

से एक्सेस कर रहे हैं, सुझाव के लिए धन्यवाद। मैंने बस अपने काम पीसी पर आईआईएस पर इसे होस्ट करके कोशिश की। मुझे वास्तव में इस तरह के बेहतर परिणाम मिल गए। यह "फ़ायरवॉल के पीछे" आईपी पता दिखा रहा है, लेकिन मुझे लगता है कि यह मेरी आवश्यकताओं के लिए काम करेगा। जब मैं वीपीएन पर पहुंचता हूं, तो मुझे अपना वीपीएन क्लाइंट पता मिलता है। मेरे काम पीसी से, मुझे अपना आंतरिक आईपी मिलता है। ठंडा। मुझे इसके साथ काम करने में सक्षम होना चाहिए। बहुत धन्यवाद! –

2

आप क्लाइंट मशीन का आईपी पता किसी क्लाइंट साइड मेचान्सिम (जावास्क्रिप्ट, सिल्वरलाइट इत्यादि) का उपयोग करके प्राप्त नहीं कर सकते हैं।

मीकल सिंक ने चांदी की रोशनी से ग्राहक जानकारी को पुनर्प्राप्त करने के बारे में एक दिलचस्प लेख पोस्ट किया .. silverlight-2-beta1-url-referrer-screen-resolution-clients-data-time-and-ip-address

इस approch काम करना चाहिए .. लेकिन वहाँ भी सीमा

यह वास्तविक पता प्राप्त करने में सक्षम है, तो प्रॉक्सी सर्वर उन पतों छुपा है नहीं होगा।

संबंधित मुद्दे