在我的测试机器上运行(Windows XP,IIS5.1)以下代码在C#.NET WebService(.SVC)进程标识(使用machine.config中指定用户)IIS6 WebService下的Environment.GetFolderPath(Environment.SpecialFolder.ApplicationFolder)返回的路径错误
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
正确返回
c:\Documents and Settings\myUserName\Application Data
然而,在(终端服务)Windows 2003的计算机上运行IIS6和执行相同的代码,但现在用ApplicationPool到指定相同的进程标识该方法返回:
- 名为myUsername所属的组IIS_WPG(甚至试图联系)
- 到Environment.UserName呼叫:
c:\Documents and Settings\Default User\Application Data
东西Win2003的/ IIS6的机器上运行,而我已签正确返回myUserName
- 调用Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);也返回了“默认用户”的路径,同样与DesktopDirectory
- 登录名为myUsername并确保C:\ Documents和Settings \ MyUserName输入存在
- 运行完全相同的代码在Windows .NET应用程序2003盒子,这工作并返回正确的路径。
我很困惑,它只发生在IIS6下运行时。这几乎就像它认为呼叫来自网络服务或本地系统用户,它不检查运行应用程序池的标识。
顺便说一句,当我看着procmon中,看是从它没有这样的问题读取和写入C中的Web服务称为C++应用程序:\ Documents和Settings \ MyUserName输入\ ApplicatonData,它似乎并不有问题,也许它会以不同的方式建立路径。
我开始认为这可能是.NET中的一个bug?
谢谢。
Tom Deloford
这绝对不是一个错误。 – leppie 2010-10-15 15:22:17
有用的评论 – 2010-10-15 15:23:18
你是对的它是由设计。 – 2010-10-17 13:52:01