File.Move System.IO.IOException: «В настоящее время невозможно установить больше соединений с этим удаленным компьютером, потому что уже существует столько соединений, сколько может принять компьютер».
У меня есть процесс, работающий под учетной записью SYS. Он обрабатывает файлы на локальном жестком диске и перемещает их на удаленный диск в домене, используя олицетворение
Редактировать, добавлен пример кода:
Метод ниже вызывается неоднократно (Олицетворение - это служебный класс, который я использую для олицетворения, это не имеет отношения к проблеме).
private void moveFileUsingImpersonation(string srcFilePath, string dstFilePath, string userName, string passWord)
{
WindowsImpersonationContext wic = null;
// move it to destination
try
{
wic = Impersonation.Impersonate(userName, passWord);
if (wic != null)
{
File.Move(srcFilePath, dstFilePath);
}
else
{
Console.WriteLine("moveFileUsingImpersonation, Failure to impersonate!");
}
}
catch(Exception ex)
{
Console.WriteLine("moveFileUsingImpersonation, Exception={0}", ex.ToString());
}
finally
{
Impersonation.UndoImpersonate(wic);
}
}
Редактировать, добавлен пример кода.
Когда процесс выполняется на компьютере с XP, а удаленный диск - на компьютере с XP или Win7, вызов File.Move работает нормально и перемещает необходимые файлы. Однако, когда процесс выполняется на Win7, а удаленный диск на компьютере с Win7, указанное исключение выдается после перемещения 20 файлов.
Я также пытался вызвать win32 API MoveFileEx с флагами MOVEFILE_REPLACE_EXISTING & MOVEFILE_COPY_ALLOWED & MOVEFILE_WRITE_THROUGH, с тем же результатом - ERROR_REQ_NOT_ACCEP 71 (0x47).
Похоже, что основное соединение, созданное при вызове File.Move, не закрывается должным образом в Win7.
Есть ли способ преодолеть это?
Что мне здесь не хватает?
Спасибо, Илан