2017-02-12 20 views
0

Я использую System.IO.Path.GetTempPath() в моей службе WCF, чтобы создать временный файл в пути к папке Temp в IIS. я ожидал получить C: \ Users [User] \ AppData \ Local \ Temp путь, но я получаю C: \ Windows \ Temp вместо.Получить временную папку в IIS

Как я могу получить ожидаемый путь?

+2

Очень вероятно, что ваш пул приложений в IIS не работает под вашей локальной учетной записью (следовательно, получает другую папку). По умолчанию IIS использует специальные ограниченные учетные записи по соображениям безопасности: https://www.iis.net/learn/manage/configuring-security/application-pool-identities –

ответ

0
//This code is you need, this code is getting current user temp directory. 
string temp = System.Environment.GetEnvironmentVariable("TEMP"); 
//This method is getting system temp directory. 
System.IO.Path.GetTempPath(); 
+0

Но каков текущий пользователь? Прочитайте комментарий Кевина Госсе. –

0

Документация, из Kernel32.dll: GetTempPath() может помочь вам:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa364992(v=vs.85).aspx

в основном то, что происходит в IIS выполняется под учетной записью, которая не имеет переменная USERPROFILE окр определена , поэтому вместо этого используется TMP или TEMP.

Помните, что w3wp (рабочий процесс в IIS) обычно работает как DefaultAppPool, а не как фактический пользователь с назначенным каталогом.

Надеюсь, это поможет!