我在IIS6中设置了虚拟目录。这映射到共享网络驱动器。
我可以使用
正确映射路径string mappedPath = HttpContext.Current.Server.MapPath(path);
然后我创建一个DirectoryInfo对象,因为我想在目录中找到一些文件。
DirectoryInfo updateDirectory = new DirectoryInfo(mappedPath);
但是updateDirectory.Exists
是假的?我可以从mappedPath
获取字符串并复制到Start-> Run以进入路径,因此我知道它存在。我正在使用集成的Windows身份验证对Web服务进行身份验证,并拥有必要文件夹的权限。
代码中是否有遗漏的东西?或者这是IIS等的纯粹设置和配置?
答案 0 :(得分:4)
您需要检查您的服务工作进程帐户是否具有该文件夹的访问权限。 AFAIK Windows身份验证不会模拟工作进程,因此它可能与您的Windows帐户不同。 或者(仅用于证明帐户问题)您可以使用您的帐户运行应用程序池,以查看问题是否会消失。
答案 1 :(得分:2)
根据这个链接:
http://bytes.com/topic/asp-net/answers/471616-server-mappath-virtual-directories
Server.MapPath
在用于虚拟目录时不会给出预期的输出。
如果是服务器权限并且您使用的是Windows身份验证,请确保在配置中包含此权限:
<identity impersonate="true" />
DirectoryInfo在错误条件下返回false:如果文件夹不存在;你没有权限;或者它是一个断开连接的网络文件夹。
听起来像是对我的ASP.NET工作进程的权限 - 模仿将解决这个问题。