我正试图得到:
Directory.Exists(@"E:\subdirectory")
从ASP运行时返回“true”。NET时,E:是持久映射的网络驱动器。我使用以下命令从在我的用户上下文下运行的命令行映射它,该命令成功返回并且不提示输入凭据:
net use E: \\servername\sharename /persistent:yes
在这一点上,我完全在本地运行。
当我运行目录。从控制台应用程序或linqpad中存在行,它返回true。当我从运行在IIS(不是IIS Express)下的ASP. NET应用程序运行时,它返回false。
我已将应用程序池更改为使用与本地运行的用户帐户相同的用户帐户。我已通过以下方式验证了该措施的有效性:
然而,我的ASP。NET应用程序在检查网络共享时仍然返回false。
这是为什么呢?
映射的网络驱动器绑定到用户会话。IIS正在会话0中运行,您的映射驱动器很可能正在会话1中运行。
在为会话创建网络驱动器时,我不知道有什么方法可以让它们在其他会话中显示,我认为您不需要使用E:\
,而是使用\\servername\sharename
作为路径。