.net 如何获取IIS虚拟目录&;web应用程序&x27;使用C#代码的物理路径?

.net 如何获取IIS虚拟目录&;web应用程序&x27;使用C#代码的物理路径?,.net,windows,iis,.net,Windows,Iis,我正在编写一个web应用程序部署验证工具,需要检查web应用程序和虚拟文件夹的物理文件夹结构 如何在C#中实现这一点?或者更一般地说,通过C#代码与IIS交互?您可以使用WMI执行此类操作: 您还可以使用C#中的WMI(谷歌表示“WMI C#”) 因此,是的,这是可能的。看看HttpRequest对象。您可以使用HttpContext.current.Request.URL获取当前URL 如果要检查虚拟IIS文件夹是否存在,可以尝试对预期存在的相对URL执行Server.MapPath调用(

我正在编写一个web应用程序部署验证工具,需要检查web应用程序和虚拟文件夹的物理文件夹结构


如何在C#中实现这一点?或者更一般地说,通过C#代码与IIS交互?

您可以使用WMI执行此类操作:

您还可以使用C#中的WMI(谷歌表示“WMI C#”)


因此,是的,这是可能的。

看看
HttpRequest
对象。您可以使用
HttpContext.current.Request.URL
获取当前URL


如果要检查虚拟IIS文件夹是否存在,可以尝试对预期存在的相对URL执行
Server.MapPath
调用(同样可以在
HttpContext
对象中找到)如果映射不成功,您可以假定您的相对路径指定的特定子文件夹不存在。

我强烈建议将dll用于IIS的高级管理功能

ServerManager serverManager = new ServerManager();

// get the site (e.g. default)
Site site = serverManager.Sites.FirstOrDefault(s => s.Name == "Default Web Site");
// get the application that you are interested in
Application myApp = site.Applications["/Dev1"];

// get the physical path of the virtual directory
Console.WriteLine(myApp.VirtualDirectories[0].PhysicalPath);
给出:


F:\Dev\branchs\Dev1

谢谢你提醒我这个好的老WMI。这是为管理层准备的。我差点忘了@smwiki-对于管理,是的,但是对于配置,更喜欢在IIS6上使用
System.DirectoryServices
,在IIS7上使用
Microsoft.Web.Administration
。我发现IIS可以自动生成脚本代码以获得特定的配置值。在C#中,Shell脚本和javascript。但我仍在试图找出如何获取虚拟文件夹和web应用程序的物理路径。如果有人发现了,你能告诉我吗?谢谢