NetworkCredential ошибка в ASP.NET
Я пытаюсь получить доступ к веб-странице через ASP.NET с помощью класса NetworkCredential. Однако я продолжаю получать исключение со следующим сообщением System.Security.Cryptography.CryptographicException: The handle is invalid
Ниже мой код о том, как я пытаюсь вызвать функцию. Любая помощь с благодарностью.
C#:
System.Net.WebClient client = new System.Net.WebClient();
client.Credentials = new System.Net.NetworkCredential("Admin", "Nimda");
Трассировки стека
[CryptographicException: The handle is invalid.
]
System.Security.SecureString.ProtectMemory() +154
System.Security.SecureString.InitializeSecureString(Char* value, Int32 length) +170
System.Security.SecureString..ctor(Char* value, Int32 length) +65
System.Net.SecureStringHelper.CreateSecureString(String plainString) +6181188
System.Net.NetworkCredential..ctor(String userName, String password) +64
3 ответа
Хорошо, это немного неловко - я посмотрел, и ошибка сводится к вашей конфигурации Windows.... где-то.
Часть кода, которая вызывает исключение, на самом деле является вызовом взаимодействия для функции в advapi32.dll, а именно:
int status = Win32Native.SystemFunction040(this.m_buffer, (uint) (this.m_buffer.Length * 2), 0);
if (status < 0)
{
throw new CryptographicException(Win32Native.LsaNtStatusToWinError(status));
}
this.m_encrypted = true;
вызовы:
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success), DllImport("advapi32.dll", CharSet=CharSet.Unicode, SetLastError=true)]
internal static extern int SystemFunction040([In, Out] SafeBSTRHandle pDataIn, [In] uint cbDataIn, [In] uint dwFlags);
Это возвращает код ошибки, вызывая ваше исключение.
Если вы находитесь на рабочем месте, вы можете поговорить с вашими системными администраторами / сетевыми парнями, чтобы выяснить, есть ли в вашей локальной политике что-то, что может вызвать сбой. В противном случае я бы посмотрел, что произойдет, если вы отключите антивирус / отключите брандмауэр / отключите любое стороннее прокси-программное обеспечение.
По сути, все, что переопределяет сетевые функции по умолчанию. Кроме того, возможно, стоит проверить, что у вас есть все последние обновления Windows и что у вас нет вирусов или вредоносных программ.
Извините, я не могу быть более конкретным, но я не верю, что это ошибка.Net / программирования.
Я только что столкнулся с этой же проблемой. Я работал локально под ASP.NET Development Server в VS 2010. Когда я запускал приложение под Windows 7 / IIS 7, оно работало просто отлично. Надеюсь это поможет!
Это должно работать в стандартной консоли powershell:
Add-Type -AssemblyName System.Net
$client = New-Object System.Net.WebClient
$netc = New-Object System.Net.NetworkCredential("Admin", "Nimda")
$client.Credentials = $netc
Будет интересно посмотреть, генерирует ли это ту же ошибку недопустимого дескриптора.
Изменить: Извинения, была опечатка во 2-й строке.