Проблема:.NET-код выполняется из одного каталога, но не из другого, на том же диске [закрыт]

StackOverflow https://stackoverflow.com/questions/126228

  •  02-07-2019
  •  | 
  •  

Вопрос

Наше приложение представляет собой гибрид неуправляемого приложения Win32 и управляемого приложения .NET 2.0.Часть Win32 является основным исполняемым файлом, который в определенный момент загружает и размещает среду выполнения .NET 2.0 и загружает некоторые управляемые модули для открытия новых окон winforms.

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

На сервере, доступ к которому осуществляется через citrix, если файлы приложения расположены в каталоге, расположенном на рабочем столе текущего вошедшего в систему пользователя, который является администратором сервера / домена, программа работает нормально.Окна .NET открываются, как и ожидалось.

Однако, если мы переместим каталог в корневой каталог того же диска, который является физическим диском на сервере (поэтому нет сопоставления SAN или чего-либо еще, что могло бы вызвать команду CASPOL насколько мне известно) и оставьте все остальное прежним, того же пользователя, ту же конфигурацию и т.д., приложение автоматически завершает работу, когда мы пытаемся вызвать .ЧИСТАЯ Windows.Он выходит из строя, просто исчезая, что наводит на мысль, что это может быть что-то вроде переполнения стека.Мы рассматриваем возможность добавления ведения журнала в некоторые части приложения, чтобы, возможно, иметь возможность выяснить, что происходит и где, но я также размещаю этот вопрос здесь.

Пока что мы проверили, что нет никаких странностей в списке доступа CASPOL, ничего странного в кэше NGEN (я подумал, возможно, там были поврежденные изображения из предыдущих, если владелец сервера играл с ними) и никаких странностей в GAC (мы не используем GAC для сборок).

Обобщенный:

  • Если программа запускается из U:\Documents и каталога Настройки\ИМЯ ПОЛЬЗОВАТЕЛЯ \ Рабочий стол \, она работает
  • Если он запускается из U:\directory, это не
  • U:является ли физический диск на сервере
  • Никаких видимых странностей в кэшах NGEN или GAC нет
  • Правильный .Установлена среда NET runtime, установлены нужные файлы для нашего приложения (и действительно, они отлично работают, если запускаются с рабочего стола).

У кого-нибудь есть что-нибудь, что могло бы помочь?

Редактировать: Проблема повторно спросили здесь с другой/иная информация, и "решена".

Это было полезно?

Решение

Моим первым шагом было бы запустить process monitor из MS-Sysinternals и посмотреть, какие вызовы / результаты отличаются в этих двух случаях.Возможно, это дало бы вам несколько подсказок для работы (разные результаты для одного и того же вызова, некоторые ошибки в проблемном запуске, которых нет в хорошем ...)

Вы можете загрузить process monitor из MS:http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

Другие советы

Некоторое время назад у меня была именно такая проблема.После долгого выдергивания волос я обнаружил проблему.

Будьте очень осторожны при использовании Process .Start() или любых подобных вызовов, потому что в зависимости от того, как вы его запускаете, он может использовать различные папки в качестве рабочей среды (текущий путь, системное окружение и так далее.

Моя первая мысль заключается в том, что вам нужно убедиться, что в программе не определены относительные / абсолютные пути для ссылок на сборки, файлы и т.д.которые вызывают проблемы при перемещении корневого каталога приложения.

Возможно ли, что это связано с привилегиями пользователя?Запустите его из LUA Прожектор чтобы проверить.Даже если это не связано напрямую, этот инструмент вполне может дать несколько полезных советов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top