NetworkCredential ошибка в ASP.NET - PullRequest
6 голосов
/ 10 мая 2011

Я пытаюсь получить доступ к веб-странице через 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 ]

5 голосов
/ 28 сентября 2011

Я только что столкнулся с этой же проблемой. Я работал локально под ASP.NET Development Server в VS 2010. Когда я запускал приложение под Windows 7 / IIS 7, оно работало просто отлично. Надеюсь, это поможет!

4 голосов
/ 10 мая 2011

Хорошо, это немного неловко - я посмотрел, и ошибка связана с вашей конфигурацией 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 / ошибка программирования.

0 голосов
/ 10 мая 2011

Это должно работать в стандартной консоли powershell:

Add-Type -AssemblyName System.Net
$client = New-Object System.Net.WebClient
$netc = New-Object System.Net.NetworkCredential("Admin", "Nimda")
$client.Credentials = $netc

Будет интересно посмотреть, будет ли это генерировать ту же ошибку недопустимого дескриптора.

Редактировать: Извинения, произошла опечатка в2-я строка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...