我有一个网应用程序,用户可以上传文件。该文件的物理存储由IIS在一个虚拟的文件夹是映射到外部存储设备。记录关于每个上传文件存储在数据库。该数据库记录包含的信息有关的文件是否仍然是"活性"(没有被删除的用户),以及虚拟的文件夹路径(例如:/storage1/测试)

现在,我谨、周期性的,运行一个管理任务之外IIS检索的所有文件的列表,不再"活动",并删除这些从物理存储。我会喜欢的行政任务之外运行IIS作为计划任务或windows服务。然而,我不能找出地图的虚拟的文件夹路径保存在数据库记录到一个物理的路径,在外部进程。是否有任何方式"点击"成IIS从外部进程或任何其他智能的方式做到这一点?(或者是我在错误的方向完全).

TIA /Henrik

有帮助吗?

解决方案

您需要在您的项目添加的System.Web参考。

string path = System.Web.HttpServerUtility.MapPath("/MyWebSite");

其他提示

如果您的应用程序是一个ASP.NET应用程序,你可以调查电话使用Server.Mappath - 如果你正在使用相同的虚拟目录为主要应用

否则,我建议存储在配置了“基本路径”(即对应于虚拟目录路径)用于外部应用程序,只是级联该基地路径和文件路径成一个完整的路径。

马克

如果你需要检索此路径的编程方式然后你可以做一些事情,如:

using(DirectoryEntry de = 
    new DirectoryEntry("IIS://Localhost/w3svc/1/root/storage1/test"))
{
    string pathToFiles = de.Properties["Path"].Value;

    // Do my file tidy up tasks....
}

有几件事情要注意:

  • 数量'1'在的路径 DirectoryEntry 构造是的 IIS数字的网站。

  • 在路径 IIS://Localhost/w3svc/1/root/storage1/test, 第一部分 IIS://Localhost/w3svc/1/root 是 你的网站的'根源'的应用程序。你总是需要这个的一部分。

  • 你会需要增加一个参考 的 System.DirectoryServices 会给你的项目。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top