1

У нас есть исполняемый файл .Net 4.0 (MyProg.exe) и связанные библиотеки, которые развернуты в общей сетевой папке с помощью XCopy. MyProg.exe и его dll все неподписаны.

Они установлены на общем сетевом ресурсе, поэтому несколько пользователей могут использовать одну и ту же версию программы и упростить ее обновление. Это работало хорошо для многих наших клиентов уже много лет.

Для недавнего клиента папка на виртуальной машине Windows Server 2012 является общей сетевой папкой. Пользователи запускают программу с другого терминального сервера (Windows Server 2012).

Когда мы обновили MyProg.exe (до версии 2.0 с 1.0), сервер терминалов не запускает новый исполняемый файл, пока он не будет перезапущен. Он продолжает загружать версию 1.0, даже если этот exe больше не доступен. Кажется, что работает кешированная версия MyProg.exe V1.0.

  1. Шаги, которые я попробовал:
    1. Закройте все экземпляры программы
    2. Скопируйте новый MyProg.exe в папку и перезапишите файлы (обновленная версия exe с 1.0 до 2.0)
    3. Проверьте версию 2.0 файла MyProg.exe на странице « Свойства» >> «Сведения» как на файловом сервере, так и на сервере терминалов.
    4. Убедитесь, что MyProg.exe V2.0 запускается при запуске с файлового сервера с использованием файла ярлыка (цель: \\Server\MyProg\MyProg.exe)
    5. Запустите тот же файл ярлыка (цель: \\Server\MyProg\MyProg.exe) с сервера терминалов, и MyProg.exe V1.0 запустится
    6. Переименуйте \\Server\MyProg в \\Server\ MyProg1 и убедитесь, что терминальный сервер не может запустить ярлык, поскольку эта папка больше не существует.
    7. Создайте новый файл ярлыка (Traget: \\Server\MyProg1\MyProg.exe) и убедитесь, что MyProg.exe V2.0 работает на клиенте
    8. Переименуйте папку \\Server\MyProg1 обратно в \\Server\MyProg, и при запуске исходного файла ярлыка продолжается загрузка MyProg.exe V1.0 до перезапуска сервера терминалов.
    9. Я проверил, что автономные файлы отключены на терминальном сервере
    10. Я подтвердил, что не могу перезаписать исполняемый файл MyProg.exe, когда программа работает на сервере терминалов.

Что еще можно проверить, чтобы выяснить причину, по которой исполняется более старая версия исполняемого файла, даже если этот файл больше не существует?

1 ответ1

0

Свяжитесь со службой технической поддержки Microsoft. Они упомянули, что это может быть вызвано этими настройками для SMB. Мы изменили эти параметры и будем сохранять их при следующем обновлении.

http://technet.microsoft.com/en-us/library/ff686200(v=WS.10).aspx

Настройки по ссылке выше не работали.
Более подробная информация, которая помогла нам разобраться в проблеме: клиентский компьютер является терминальным сервером Windows

Эта статья базы знаний дает больше информации в этом отношении:
https://support.microsoft.com/kb/2536487

Приложения могут зависать или перестать отвечать на запросы, если другой пользователь выходит из сеанса удаленного рабочего стола в Windows Server 2008 или Windows Server 2008 R2

Симптомы:

При запуске приложения с подключенного диска приложение может перестать отвечать или зависать для пользователя (или нескольких пользователей), когда другой пользователь выходит из системы. Например:

  1. Один сервер является файловым сервером, а другой - сервером удаленного хоста сеансов (терминальным сервером).
  2. Папка на файловом сервере сопоставлена для использования удаленными пользователями, подключающимися к серверу RDS.
  3. Приложение на сопоставленной общей папке запускается несколькими пользователями.
  4. Один пользователь выходит из системы, в результате чего другие пользователи приложения испытывают сбой или отказ приложения.

В частности, поведение возникает, когда первый или последний пользователь приложения выходит из системы, в зависимости от версии. Windows Server 2008 будет испытывать эту проблему, когда первый пользователь выходит из системы; Windows Server 2008 R2 будет испытывать эту проблему, когда последний пользователь выходит из системы.

Причина:

Это происходит из-за способа, которым перенаправитель обрабатывает FCB (блок управления файлами) для рассматриваемого двоичного файла. В Windows Server 2008 FCB принадлежит пользователю, который первым открыл файл, и этот FCB используется последующими пользователями. Когда первый пользователь выходит из системы, FCB теряется, что приводило к аварийному завершению работы последующих пользователей приложения или его отказу от ответа. В Windows Server 2008 R2 FCB принадлежит последнему пользователю, открывшему файл, и предыдущие пользователи испытывают проблему, если последний пользователь выходит из системы

Обходной путь:

Установите приложение локально на терминальном сервере, а не на сетевом ресурсе.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .