当前位置: 首页 > 编程语言 > C#

IIS6 WebService下Environment.GetFolderPath(Environment.SpecialFolder.ApplicationFolder)返回的错误路径分享

时间:2023-04-11 01:34:59 C#

C#学习教程:IIS6WebService共享下Environment.GetFolderPath(Environment.SpecialFolder.ApplicationFolder)返回的错误路径IIS5.1),在C#.NETWebService(.SVC)自定义进程标识下执行如下代码(使用machine.config指定用户)Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);正确返回c:DocumentsandSettingsmyUserNameApplicationData但是,在运行IIS6但现在使用ApplicationPool指定相同进程标识的(终端服务)Windows2003计算机上执行相同代码时,该方法返回:c:\DocumentsandSettingsDefaultUserApplicationDataI我在Win2003/IIS6机器上在运行时检查的事情:myUserName属于IIS_WPG组(甚至尝试过Administrator)对Environment.UserName的调用正确返回myUserName还返回“默认用户”路径,还使用??DesktopDirectory以myUserName身份登录并确保C:\Documentsandsettings\myUserName存在在Windows2003框上的.net应用程序中运行完全相同的代码,这将起作用并返回正确的路径。我很困惑,它只在IIS6下运行时发生。这几乎就像它认为调用来自Web服务或本地系统用户,而不是检查应用程序池运行的身份。顺便说一句,当我查看Procmon并观察从web服务调用的C++应用程序时,它对C:\DocumentsandsettingsmyUserName\ApplicatonData的读写没有问题,似乎没有问题,也许它建立了不同的路径。我开始认为这可能是.NET中的错误?谢谢。TomDeLoafford解决了它。显然这是“设计使然”,因为IIS6不加载用户配置文件设置。微软建议我先升级到IIS7或者调用LoadUserProfile,我想知道是什么让他们从IIS5.1改变了这个功能。http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/890fa85a-b11a-4fbe-a333-cbe69abd72a7无论如何,不??要假设功能没有被删除并始终使用相同的应用程序用于测试的服务器,即使它惹恼了IT部门!是的。这不是错误。应用程序池在哪个用户下运行?让我们分解一下:测试机器是使用IIS来托管服务还是内置Web服务器?如果您使用内置的网络服务器,它将在您的用户下运行。如果您使用IIS,哪个是池用户?如果它是Web服务或本地系统,则进程在其中一个用户的上下文中运行,实际上,调用:Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)并不重要,您应该更改池的用户(和回收池)以查看更改。以上就是C#学习教程的全部内容:IIS6WebService下Environment.GetFolderPath(Environment.SpecialFolder.ApplicationFolder)返回的错误路径。整理自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: