从Microsoft.Web.Administration中查找物理路径以及相对于其根目录的路径

Lee*_*son 5 .net iis-7

我想使用Microsoft.Web.Administration .NET程序集找到IIS网站中的物理路径,相对于网站根目录的路径.

似乎没有一种方法可以做到这一点,但我想知道 - 以下程序是最好的方法吗?:

  1. 获取Microsoft.Web.Administration.Site对象
  2. 找到具有最长路径的应用程序,该路径与路径相对于根的路径的开头相匹配
  3. 从路径的开头相对于根剥离应用程序路径,给出相对于应用程序的路径
  4. 在此应用程序中查找虚拟目录,其中最长路径与路径相对于应用程序的开头相匹配
  5. 从相对于应用程序的路径的开头剥离应用程序路径,提供相对于虚拟目录的路径
  6. 将相对于虚拟目录的路径(交换/ for)附加到虚拟目录的物理路径,以提供我们想要的物理路径

背风处

Jon*_*mee 8

我找到了以下代码来获取路径

ServerManager sm = new ServerManager();
sm.Sites["Default Web Site"].Applications["/"].VirtualDirectories["/"].PhysicalPath;
Run Code Online (Sandbox Code Playgroud)

http://forums.iis.net/t/1146686.aspx/1


Car*_*res 3

你说得对,这就是正确的算法。因此,换句话来说,请确保:
1) 找到它匹配的站点(如果您是根据主机名或绑定(IP、端口等)进行查找)。
2) 在站点内查找与剩余 URL 的最长子集匹配的应用程序。
3) 在应用程序中查找与剩余 URL 的最长子集匹配的 VirtualDirectory。
4) 执行 Path.Combine(vdir.PhysicalPath, "URL 的剩余部分用 / 替换为 \")

这就是物理路径。请记住,如今许多 URL 可能是逻辑的(在 MVC 或重写等场景中),因此您可能没有真正的物理路径。