2014-07-13 3 views
5

मैं आईपी पता SAN के साथ एक अनुरोध बनाने की कोशिश कर रहा हूं।आईपी पता सहित एक कंप्यूटर अनुरोध बनाएँ विषय वैकल्पिक नाम

System.ArgumentException: Value does not fall within the expected range. 
       at CERTENROLLLib.CAlternativeNameClass.InitializeFromString(AlternativeNameType Type, String strValue) 

क्या मैं गलत कर रहा हूँ:

public static CAlternativeNameClass GetCurrentIpName() { 
    //get current machine IP address 
    IPAddress ip = GetCurrentIp(); 

    if (ip == null) { 
     return null; 
    } 

    try { 
     CAlternativeNameClass nameClass = new CAlternativeNameClass(); 
     nameClass.InitializeFromString(AlternativeNameType.XCN_CERT_ALT_NAME_IP_ADDRESS, ip.ToString()); 
     return nameClass; 
    } catch (Exception e) { 
     Console.WriteLine(e); 
     return null; 
    } 
} 

समस्या यह है कि मैं अगले त्रुटि मिल रही है: यह समारोह है कि CAlternativeName बनाने के लिए जिम्मेदार है?

उत्तर

3

प्रारंभ करें FromString XCN_CERT_ALT_NAME_IP_ADDRESS ** के वैकल्पिक नाम प्रकार को स्वीकार नहीं करता है। आपको का उपयोग करना चाहिए इसके बजाय FromRawData प्रारंभ करें। त्रुटि एक गलत नामक है क्योंकि यह वास्तव में मान पैरामीटर नहीं है, यह प्रकार है, लेकिन हे।

InitializeFromRawData इनपुट के रूप में एक स्ट्रिंग लेता है (क्योंकि यह माइक्रोसॉफ्ट, नहीं Ronseal है), तो आप तो यह फिर से कच्चे डेटा में बदल सकते हैं एक स्ट्रिंग के रूप में अपने कच्चे डेटा सांकेतिक शब्दों में बदलना करने की जरूरत है:

String ipBase64 = Convert.ToBase64String(ip.GetAddressBytes()); 
nameClass.InitializeFromRawData(AlternativeNameType.XCN_CERT_ALT_NAME_IP_ADDRESS, EncodingType.XCN_CRYPT_STRING_BASE64, ipBase64); 

बारे में एक एस्चर कृति के रूप में सहज के रूप में।

** स्रोत: http://msdn.microsoft.com/en-us/library/windows/desktop/aa375024%28v=vs.85%29.aspx

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