2009-12-19 18 views
25

विंडोज सर्वर 2008 पर, मेरे नेटवर्क कार्ड के गुण अनुभाग में, मेरे पास आईपीवी 6 अक्षम है, केवल आईपीवी 4 सक्षम है।आईआईएस Request.UserHostAddress आईपीवी 6 (:: 1) लौटा रहा है, भले ही आईपीवी 6 अक्षम

हालांकि एएसपी.नेट में, Request.UserHostAddress ':: 1', एक आईपीवी 6 पता देता है।

क्या किसी को यह पता चला है कि आईपीवी 4 पर वापस कैसे लौटना है?

+0

यदि आप इसे आज पढ़ रहे हैं, मूल रूप से पोस्ट किए जाने के कुछ सालों बाद, यह एक सार्वजनिक सेवा घोषणा है: आपको अंततः अपने प्रोग्राम को आईपीवी 6 के साथ काम करना होगा। सर्वर 2008/Vista के साथ शुरुआत, विंडोज़ पर आईपीवी 6 को अक्षम करना माइक्रोसॉफ्ट द्वारा _untested और असमर्थित_ है, जो आईपीवी 6 को विंडोज़ का _mandatory_ भाग मानते हैं। –

उत्तर

22

यदि आप लोकलहोस्ट (:: 1/127.0.0.1) से कनेक्ट कर रहे हैं, तो आप अपने सर्वर के नेटवर्क कार्ड का उपयोग नहीं कर रहे हैं, बल्कि विंडोज़ के वर्चुअल कार्ड की तरह। मुझे नहीं लगता कि लूपबैक कार्ड को कॉन्फ़िगर करने और आईपीवी 6 को हटाने के लिए वैसे भी है, पूरे सिस्टम से समर्थन को हटाए बिना, लेकिन Win2008 में आप शायद ऐसा नहीं कर सकते हैं।

आप यह सत्यापित कर सकते हैं कि नेटवर्क पैकेट कैप्चरिंग यूटिल चलाकर आपका भौतिक कार्ड उपयोग नहीं किया जा रहा है। विंडोज़ में, आप वर्चुअल लूपबैक कार्ड पर चलने वाले ट्रैफ़िक को कभी भी नहीं छू सकते हैं।

जिसके अनुसार, आप एक अलग मशीन से पहुंचना चाहिए, आप देखना चाहिए से रोल्ला वेबसाइट एक है एक IPv4 एड्रेस Request.UserHostAddress

28

4 दोस्तों द्वारा दिया जा रहा है (एक कनेक्शन है कि अपने भौतिक कार्ड के माध्यम से गुजर हो जाएगा के माध्यम से) समाधान here, जिसे मैंने अपने ऐप में उपयोग किया है।

अद्यतन:

शायद ज़रुरत पड़े इस लिंक मृत हो जाता है, यहाँ इस लिंक पर आधारित कोड है:

public string GetIpAddress() 
{ 
    string ipAddressString = HttpContext.Current.Request.UserHostAddress; 

    if (ipAddressString == null) 
     return null; 

    IPAddress ipAddress; 
    IPAddress.TryParse(ipAddressString, out ipAddress); 

    // If we got an IPV6 address, then we need to ask the network for the IPV4 address 
    // This usually only happens when the browser is on the same machine as the server. 
    if (ipAddress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6) 
    { 
     ipAddress = System.Net.Dns.GetHostEntry(ipAddress).AddressList 
      .First(x => x.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork); 
    } 

    return ipAddress.ToString(); 
} 
+0

स्वच्छ समाधान, एक विन्यास परिवर्तन की आवश्यकता नहीं है, स्थानीय मशीन पर काम करता है। –

4
  1. जाओ शुरू करने के लिए -> नियंत्रण कक्ष पर क्लिक करें ->View network status and tasks पर क्लिक करें नियंत्रण कक्ष विंडो में - विंडो में change adapter settings पर क्लिक करें।

  2. Network Connections विंडो दिखाई देगी। यहां आप network adapter (वायरलेस एडाप्टर या वायर्ड ईथरनेट एडाप्टर हो सकते हैं) पर राइट क्लिक करें, जिसे आप आईपीवी 6 अक्षम करना चाहते हैं और Properties पर क्लिक करें।

  3. network adapter properties विंडो में, Internet Protocol Version 6 (TCP/IPv6) अनचेक करें और ठीक क्लिक करें।

  4. रजिस्ट्री संपादक लॉन्च करने के लिए कमांड प्रॉम्प्ट में regedit टाइप करें, रजिस्ट्री संपादक में निम्न रजिस्ट्री आइटम का पता लगाने के लिए आगे बढ़ें। > नई - -> DWORD (32-बिट) मूल्य और 0xffffffff को मान सेट (सिर्फ टाइप ffffffff)

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents 
    
  5. तो DisabledComponents आइटम उपलब्ध नहीं है, आप संपादित करने के लिए जा रहा द्वारा प्रारूप निम्नलिखित में यह बनाना होगा। यह आईपीवी 6 लूपबैक इंटरफेस को छोड़कर सभी आईपीवी 6 फीचर्स को अक्षम कर देगा, अंततः OK पर क्लिक करें।

  6. कंप्यूटर को पुनरारंभ करें।

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