Server.MapPath()返回与DirectoryInfo一起使用时不存在的路径
我在IIS6中设置了虚拟目录。这映射到共享的网络驱动器。Server.MapPath()返回与DirectoryInfo一起使用时不存在的路径
我可以用
string mappedPath = HttpContext.Current.Server.MapPath(path);
然后创建一个DirectoryInfo对象,因为我想在目录中查找某些文件正确映射路径。
DirectoryInfo updateDirectory = new DirectoryInfo(mappedPath);
但是那么updateDirectory.Exists
是错误的?我可以从mappedPath
中取出字符串并将其复制到开始 - >运行中以便到达路径,以便我知道它存在。我使用集成的Windows身份验证对Web服务进行身份验证,并拥有所需文件夹的权限。
有没有什么明显的我在代码中缺少?或者这是纯粹的IIS设置和配置等?
根据此链接:
http://bytes.com/topic/asp-net/answers/471616-server-mappath-virtual-directories
Server.MapPath
对虚拟目录使用时不会给期望的输出。
如果是服务器的权限,并且您使用Windows身份验证,请确保您有这个在你的配置:
<identity impersonate="true" />
的DirectoryInfo返回出错条件错误:如果文件夹不存在;你没有权限;或者它是一个断开的网络文件夹。
听起来像你的ASP.NET工作进程对我的权限 - 模拟将解决这个问题。
酷,所以我可以记住一些做ASP.NET的东西! Windows身份验证应用于当前用户主体,但您需要手动提升“工作进程”。 – 2010-07-20 12:14:22
您需要检查您的服务工作流程帐户是否具有该文件夹的访问权限。 AFAIK Windows身份验证不会为工作进程带来模拟,因此它可能与Windows acct不同。 或者(只是为了证明帐户问题),您可以使用您的帐户运行应用程序池以查看问题是否会消失。
你也可以发布mappedPath的确切输出或值吗?我认为,它可能存在一些问题。@Adam,他说,他已经使用Start-> Run验证了它。 – Kangkan 2010-07-20 11:58:49
@Adam:是的,我可以手动验证它,如上所述 – 2010-07-20 11:59:50
@Kangkan:输出是“\\\\ someserver \\ somepath”,这是正确的,但存在,但是当我创建一个DirectoryInfo对象时,它返回False for Exists属性。 – 2010-07-20 12:01:24