2017-02-09 12 views
0
var filename = Environment.ExpandEnvironmentVariables(@"%LOCALAPPDATA%\Dropbox\info.json"); 

Когда я запускаю его в против я получаю путь мне нужно, которыйEnvironment.ExpandEnvironmentVariables возвращает неожиданный путь в IIS

C: \ Users \ User-ПК \ AppData \ Local \ Dropbox \ Информация .json

при публикации в IIS я получаю

C: \ WINDOWS \ system32 \ Config \ systemprofile \ AppData \ Roaming \ Dropbox \ info.json

+0

Вы должны развернуть этот файл info.json с приложением в папку APP_DATA, а затем прочитать его оттуда. – Will

ответ

1

Это потому, что IIS не работает под учетной записью пользователя. Он работает под учетной записью системы. C: \ WINDOWS \ system32 \ config \ systemprofile \ AppData \ Roaming \ - правильный путь для учетной записи IIS.

Вы можете установить учетную запись пользователя в пуле приложений IIS, чтобы быть вашим пользователем (не отлично для secuirty, https://technet.microsoft.com/en-us/library/cc771170(v=ws.10).aspx), или вы могли бы передать правильный путь по-другому (возможно, web.config)?

+0

Исходный вопрос выглядит как некорректная проблема XY: доступ к приложению Dropbox пользователя, которое хранится на машине _server_. –

+1

Может быть, или может быть размещен на его локальной машине. –

+0

@UweKeim У меня есть файл на Dropbox, который мне нужно использовать на нескольких ПК, я использую этот метод, поэтому мне не придется менять каждый раз путь в web.config. –

0

% LOCALAPPDATA% является папкой, специфичной для пользователя. IIS не использует того же пользователя, что и вы, когда вы запускаете VS.

На мой взгляд, есть 2 решения: - Изменить папку этого файла на что-то более обычным (Ваша папка веб-сайта, или что-то вроде D: \ Dropbox \ info.json) - Изменение пользователь IIS использует, но это действительно не очень хорошо.