Environment.ExpandEnvironmentVariables在IIS
var filename = Environment.ExpandEnvironmentVariables(@"%LOCALAPPDATA%\Dropbox\info.json");
当我运行它在VS,我得到我需要的路径是Environment.ExpandEnvironmentVariables在IIS
C回到预料的路径以.json
在发布到IIS我得到
C:\ WINDOWS \ system32 \设置\ systemprofile \应用程序数据\漫游\的Dropbox \ info.json
这是因为IIS没有在您的用户帐户下运行。它在系统帐户下运行。 C:\ WINDOWS \ system32 \ config \ systemprofile \ AppData \ Roaming \是IIS帐户的正确路径。
您可以将IIS应用程序池上的用户帐户设置为您的用户(不适用于安全,https://technet.microsoft.com/en-us/library/cc771170(v=ws.10).aspx),或者您可以通过其他方式传递正确的路径(web.config也许)?
原始问题看起来像是一个有缺陷的XY问题:访问存储在_server_机器上的用户的Dropbox应用程序。 –
可能或者可能会在他的本地机器上部署。 –
@UweKeim我有一个Dropbox上的文件,我需要在多个PC上使用,我使用这种方法,所以我不必每次都改变web.config中的路径。 –
%LOCALAPPDATA%是用户特定的文件夹。 当您从VS运行时,IIS不会使用与您相同的用户。
在我看来有两个解决方案: - 修改这个文件的东西更常用的文件夹(你的网站文件夹,或像d:\ Dropbox的\ info.json) - 更改用户IIS使用,但这真的不是一个好选择
您应该将该应用程序的info.json文件部署到APP_DATA文件夹,然后从那里读取它。 – Will