2014-07-13 13 views
5

IP adresi SAN ile bir istek oluşturmaya çalışıyorum.IP adresi dahil bir bilgisayar talebi oluşturma Konu Alternatif adı

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

yanlış yapıyorum:

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

Sorun sonraki hata alıyorum şudur: Bu CAlternativeName oluşturmaktan sorumludur işlevdir?

cevap

3

InitializeFromString, XCN_CERT_ALT_NAME_IP_ADDRESS ** bir AlternativeNameType kabul etmez. Bunun yerine, InitializeFromRawData'u kullanmanız gerekir. Hata bir yanlış adın bir şeydir, çünkü aslında sorun olan değer parametresi değil, bu tür, ama hey.

InitializeFromRawData girdi olarak bir dize alır (Microsoft değil Ronseal olduğu için), bu yüzden tekrar ham verilere de açabilirsiniz böylece bir dize olarak ham verilerinizi kodlamak gerekir: Hakkında

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

Escher sanat eseri kadar sezgisel.

** Kaynak: http://msdn.microsoft.com/en-us/library/windows/desktop/aa375024%28v=vs.85%29.aspx