【问题标题】:Environment.ExpandEnvironmentVariables returns unexpected path in IISEnvironment.ExpandEnvironmentVariables 在 IIS 中返回意外路径
【发布时间】:2023-04-05 23:42:02
【问题描述】:
var filename = Environment.ExpandEnvironmentVariables(@"%LOCALAPPDATA%\Dropbox\info.json");

当我在 vs 中运行它时,我得到了我需要的路径

C:\Users\User-pc\AppData\Local\Dropbox\info.json

当发布到 IIS 时,我得到了

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

【问题讨论】:

  • 您应该将该应用程序的 info.json 文件部署到 APP_DATA 文件夹,然后从那里读取它。

标签: c# iis-10


【解决方案1】:

这是因为 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 问题:访问存储在 服务器 机器上的用户的 Dropbox 应用程序。
  • 可能,或者可能正在他的本地机器上部署。
  • @UweKeim 我在 Dropbox 上有一个文件,需要在多台电脑上使用,我使用这种方法,所以我不必每次都更改 web.config 中的路径。
  • 你知道这是查看服务器文件系统,而不是访问文件系统的用户吗?
  • @AndrewMonks 是的,我知道这一点
【解决方案2】:

%LOCALAPPDATA% 是用户特定的文件夹。 当您从 VS 运行时,IIS 不会使用与您相同的用户。

我认为有两种解决方案: - 将此文件的文件夹更改为更常用的文件夹(您的网站文件夹,或 D:\Dropbox\info.json 之类的文件夹) - 更改 IIS 使用的用户,但这确实不是一个好的选择

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    相关资源
    最近更新 更多