2012-02-08 2 views
1

У меня есть приложение .net/C# при запуске на тестовом сервере под управлением VMWARE/Windows Server 2008, получает переменную среды USERPROFILE, указывающую на C: \ windows \ system32 \ config \ systemprofile, но другие приложения, казалось бы, построенные аналогичным образом, наследуют правильное значение C: \ Users \ {username}.Что определяет вашу переменную среды USERPROFILE при запуске приложения .NET.

Небольшое завихрение - приложение получает правильное значение при локальном запуске на моей машине разработки. Поэтому я думаю, что это проблема профиля/реестра с некоторой комбинацией настроек в моем приложении.

Проблемы возникают при попытке открыть OpenFileDialog или аналогичные. Вы получаете исключение «Местоположение недоступно: C: \ Windows \ system32 \ config \ systemprofile \ Рабочий стол относится к местоположению, которое недоступно ...»

Любые идеи?

UPDATE: приложение WPF, выполняющее веб-службы против IIS через WCF. Локально в разработке я использую IISExpress. Я обнаружил, что после касания служб WCF на клиенте приложение наследует APPDATA и USERPROFILE IIS AppPool, в которых работают службы. Если я настрою значения AppPool для использования моей учетной записи пользователя вместо ApplicationPoolDefault и установки LoadUserProfile = true - все будет работать. Очевидно, это плохо. В качестве альтернативы, я кэширую переменные среды при запуске приложения WPF и после того, как он первоначально подключается к WCF, я возвращаю переменные. Это похоже на проблему, но я хотел бы решить ее лучше, но я не знаю, что влияет на это поведение в WCF и моих службах IIS.

+1

Вы запускаете процесс программным путем с помощью 'Process.Start'? Начат ли процесс с Windows Service? –

+0

Благодарим за отзыв. Значение присутствует, когда мы запускаем приложение из exe на рабочем столе. Он также управляет нерестом других процессов с помощью Process.Start, а также размещения dll в дочерних AppDomains. Но все они наследуют одно и то же значение от родителя. У меня есть другое приложение, которое также может запускать те же процессы, но это приложение (как намечено выше) получает правильное значение, и поэтому дочерние процессы также наследуют правильное значение. – Khaos

ответ

0

Возможно, вам придется иметь дело с тем, на что работает веб-приложение в IIS. Вы можете изменить его с учетной записи «Сетевая служба» по умолчанию на фактическую учетную запись пользователя.

+0

Где говорится, что это веб-приложение? –

+0

Приложение является интерфейсом WPF с использованием WCF для подключения к серверу IISExpress. – Khaos

+0

Собственно, точнее. На сервере он развертывается непосредственно на IIS, а не IISExpress. Клиент все еще подключается. Существуют переменные среды, относящиеся к AppPool в клиенте. Не уверен, что это значение индикатора означает каким-то образом использование WCF, и наша настройка загружает неправильный профиль. – Khaos

Смежные вопросы