IIS 7.5 应用程序池将错误的 %APPDATA% 用于自定义用户作为标识

标签 iis iis-7.5 application-pool appdata applicationpoolidentity

我希望我的 MVC3 Web 应用程序访问 %APPDATA%(例如 Windows 7 上的 C:\Users\MyUsername\AppData\Roaming),因为我将配置文件存储在那里。因此,我在 IIS 中以用户“MyUsername”的身份创建了一个应用程序池,通过使用该帐户登录创建了该用户的配置文件,并打开了“加载用户配置文件”选项(无论如何默认为 true)。模拟功能已关闭。

现在我遇到了 %APPDATA%(在 C# 中)的问题:

appdataDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

解析为 c:\windows\system32\inetsrv而不是 C:\Users\MyUsername\AppData\Roaming .

更新:更确切地说,上面的 C# 代码返回一个空字符串,因此 Path.GetFullPath(Path.Combine(appdataDir, "MyAppName"))将当前路径添加到我的应用程序名称中,结果是 c:\windows\system32\inetsrv\MyAppName .

我知道我之前在 Windows Server 2008 R2 上使用相同的 Web 应用程序完成了这项工作,现在我在 Windows 7 上使用相同的 IIS 7.5 主要版本遇到了这个问题。
我使用了与之前相同的过程:创建一个新用户,以该用户身份登录以创建配置文件和 APPDATA 目录,然后使用此身份添加应用程序池,最后将 Web 应用程序添加到此池中。

有什么想法吗?

最佳答案

打开您的 %WINDIR%\System32\inetsrv\config\applicationHost.config并寻找 <applicationPoolDefaults> .下 <processModel> ,请确保您没有 setProfileEnvironment="false" .如果这样做,请将其设置为 true。

关于IIS 7.5 应用程序池将错误的 %APPDATA% 用于自定义用户作为标识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9490107/

相关文章:

asp.net - 是否可以在 htm 文件上运行 asp 代码?

asp.net - 如何正确设置 IIS6 应用程序池

asp.net - Mod mono 通过 SSH 服务于不同的 Web 应用程序实例

asp.net - IIS 重写规则将 HTTP 重定向到 HTTPS 导致多个 RedirectURL 查询字符串

asp.net - 在Web应用程序之间共享SQL Server session 状态

asp.net-mvc - MVC4部署到远程IIS 7.5,访问SQL Server时给出401.2错误

redirect - IIS 重写规则以将特定域 url 重定向到同一域上的不同 url

iis - IISreset和应用程序池回收在影响缓存方面有什么区别

asp.net - 无法访问 IIS 元数据库

jquery - 最简单的 jQuery .ajax 找不到 json 文件