使用c#.net在IIS 7.0中创建虚拟目录

4
我正在尝试使用c#.net或vb.net在IIS 7.0中创建虚拟目录,有没有人可以指导我?
2个回答

11

Subash,

正如slugster这里所说,这个页面包含了你需要的所有内容:http://forums.iis.net/t/1139885.aspx

但如果你正在寻找代码片段,请查看以下内容:

你可以使用以下批处理文件完成此操作:

%systemroot%\system32\inetsrv\APPCMD add site /name:MyNewSite /bindings:"http/*:81:" /physicalPath:"C:\MyNewSite"
%systemroot%\system32\inetsrv\APPCMD set config "MyNewSite" /section:defaultDocument /enabled:true /+files.[value='home.html']

对于上面的代码片段,请确保目录存在,并且web.config是一个格式正确的xml文档。

然后,可以通过以下方式将其转换为vb.net或c#中的命令控制台应用程序:

Module Module1

    Sub Main()
        Dim proc As Process = New Process()
        proc.StartInfo.FileName = "C:\Windows\system32\inetsrv\APPCMD"
        proc.StartInfo.Arguments = "add site /name:MyNewSite /bindings:""http/*:81:"" /physicalPath:""C:\MyNewSite"""
        proc.Start()
        proc.WaitForExit()
        proc.StartInfo.Arguments = "set config ""MyNewSite"" /section:defaultDocument /enabled:true /+files.[value='home.html']"
        proc.Start()
    End Sub

End Module

我希望这能帮到你,

谢谢!

编辑:我发现你可以直接使用API来完成这个过程,而不是执行外部exe文件。

另外,请注意,当您使用API时,在IIS6和IIS7上安装虚拟目录的方法是不同的。首先,在安装IIS6时,您需要执行以下步骤:

Imports System.DirectoryServices

Module Module1

    Sub Main()
        Dim deIIS As DirectoryEntry = New DirectoryEntry("IIS://" & Environment.MachineName & "/W3SVC/1/Root")
        Dim deNewVDir As DirectoryEntry = deIIS.Children.Add("MyNewSite", deIIS.SchemaClassName.ToString)
        deNewVDir.CommitChanges()
        deIIS.CommitChanges()
    End Sub

End Module

但是在IIS7中,要做到这一点,需要执行以下操作(请注意,Microsoft.Web.Administration来自C:\Windows\System32\inetsrv\Microsoft.Web.Administration.dll):

Imports Microsoft.Web.Administration

Module Module1

    Sub Main()
        Dim iisManager As New ServerManager
        Dim site As Site = iisManager.Sites.Add("MyNewSite", "http", "*:8080:", "C:\MyNewSite")
        Dim app As Microsoft.Web.Administration.Application = site.Applications.Add("/MyApp", "C:\MyNewSite")
        app.VirtualDirectories.Add("/VDir", "C:\MyNewSite")
        iisManager.CommitChanges()
    End Sub

End Module

希望这对您有所帮助,

谢谢!


2

3
那篇论坛帖子看起来是使用 IIS 6 的做法。对于 IIS 7,最好按照 Scott 所述,在 C# 中使用 Microsoft.Web.Administration。 - Stephen Edmonds

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接