[英]What determines if a .NET app that targets the "AnyCpu" platform runs at 32 or 64 bits?
[英]What determines your USERPROFILE Environment Variable when launching a .NET app
在运行VMWARE / Windows Server 2008的测试服务器上启动时,我有一个.net / C#应用程序,收到指向C:\\ windows \\ system32 \\ config \\ systemprofile的USERPROFILE环境变量,但其他应用程序似乎以类似的方式继承了C:\\ Users \\ {username}的正确值。
稍作改动-在我的开发机器上本地运行时,应用程序会收到正确的值。 因此,我认为这是个人资料/注册表问题,其中包含应用程序中设置的某种组合。
当您尝试打开OpenFileDialog或类似文件时,问题就显现出来了。 您会收到异常“位置不可用:C:\\ Windows \\ system32 \\ config \\ systemprofile \\ Desktop引用的位置不可用...”
有任何想法吗?
更新:该应用程序是WPF通过WCF针对IIS运行Web服务。 在本地开发中,我正在使用IISExpress。 我发现在触摸客户端中的WCF服务后,该应用程序继承了服务在其下运行的IIS AppPool的APPDATA和USERPROFILE。 如果我调整AppPool值以使用我的用户帐户而不是ApplicationPoolDefault并设置LoadUserProfile = true-一切正常。 显然,这是一件坏事。 作为替代方案,我在WPF应用程序运行时将环境变量缓存起来,并且在它最初连接到WCF之后,我会重置这些变量。 这似乎可以解决问题,但是我想以更好的方式解决它,但我不知道什么因素在WCF和IIS服务中影响了此行为。
它可能必须处理Web应用程序在IIS中运行的帐户。 您可以将其从默认的“网络服务”帐户更改为实际的用户帐户。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.