में कनवर्ट करने में समस्या मेरे पास एएसपीनेट ऐप में कुछ कोड है जिसे क्लाइंट कंप्यूटर के आईपीवी 4 एड्रेस प्राप्त करने की ज़रूरत है (उपयोगकर्ता सभी अपने नेटवर्क पर हैं)। हाल ही में हमने उस सर्वर को अपग्रेड किया है जिस पर ऐप विंडोज 2008 सर्वर पर चलता है। अब Request.UserHostAddress कोड ipv4 देता है जब क्लाइंट पुराने ओएस और ipv6 पर होता है जब वे एक नए ओएस (Vista और उच्चतर) पर होते हैं। तो यह सुविधा जो कुछ ग्राहकों के लिए काम करती है, न कि दूसरों के लिए।आईपीवी 6 को आईपीवी 4
मैंने इस समस्या को ठीक करने का प्रयास करने के लिए ipv6 से ipv4 में कनवर्ट करने वाला कोड जोड़ा है। यह इस ऑनलाइन ट्यूटोरियल से है: http://www.4guysfromrolla.com/articles/071807-1.aspx .मैं dsn.GetHostAddress का उपयोग कर और फिर यह है कि यह मेरे लिए काम नहीं कर रहा पाशन के माध्यम से आईपी एक है कि है "इंटर"
foreach (IPAddress IPA in Dns.GetHostAddresses(HttpContext.Current.Request.UserHostAddress))
{
if (IPA.AddressFamily.ToString() == "InterNetwork")
{
IP4Address = IPA.ToString();
break;
}
}
if (IP4Address != String.Empty)
{
return IP4Address;
}
foreach (IPAddress IPA in Dns.GetHostAddresses(Dns.GetHostName()))
{
if (IPA.AddressFamily.ToString() == "InterNetwork")
{
IP4Address = IPA.ToString();
break;
}
}
return IP4Address;
समस्या की तलाश में लौट आए। आईपीवी 4 से कनेक्ट करने वाले क्लाइंट क्लाइंट कंप्यूटर के सही आईपीवी 4 आईपी को वापस लौटते रहते हैं, लेकिन विस्टा और विंडोज 7 से कनेक्ट होने वाले क्लाइंट सर्वर के आईपीवी 4 आईपी को वापस कर रहे हैं SERVER मशीन क्लाइंट कंप्यूटर नहीं।
मैंने कई नमूने पर इस नमूना कोड को दोहराया है। मैं आश्चर्यचकित हूं क्योंकि यह बहुत गलत है .. भाग 1, ग्राहक का आईपी पता प्राप्त करें। यदि यह विफल रहता है, तो सर्वर का आईपी पता वापस कर दें। WTF?!? –
हां, बस वही उदाहरण यहां मिला: http://www.4guysfromrolla.com/articles/071807-1.aspx। यदि कुछ और नहीं है, तो एनम समानता की जांच के लिए 'ToString() 'का उपयोग करके ऐसा लगता है कि यह कुल .NET नौसिखिया द्वारा लिखा गया था। – Groo