Server.MapPath()返回与DirectoryInfo一起使用时不存在的路径

时间:2010-07-20 11:50:10

标签: c# asp.net iis

我在IIS6中设置了虚拟目录。这映射到共享网络驱动器。

我可以使用

正确映射路径
string mappedPath = HttpContext.Current.Server.MapPath(path);

然后我创建一个DirectoryInfo对象,因为我想在目录中找到一些文件。

DirectoryInfo updateDirectory = new DirectoryInfo(mappedPath);

但是updateDirectory.Exists是假的?我可以从mappedPath获取字符串并复制到Start-> Run以进入路径,因此我知道它存在。我正在使用集成的Windows身份验证对Web服务进行身份验证,并拥有必要文件夹的权限。

代码中是否有遗漏的东西?或者这是IIS等的纯粹设置和配置?

2 个答案:

答案 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工作进程的权限 - 模仿将解决这个问题。