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-й строке.

Другие вопросы по тегам