创建 IIS 网站的代码

3

我需要编写程序来创建一个IIS网站。是否有人可以向我展示如何编写此代码?


到目前为止,我发现有关IIS 7的最佳信息来源是这里 - CheGueVerra
2个回答

4

如有可能,请不要在针对IIS 7或以上版本时使用WMI(DirectoryEntry)。在Microsoft.Web.Administration.dllwindows\system32\inetsrv)中有一个名为ServerManager的API,使得这变得非常容易:

ServerManager serverManager = new ServerManager();
serverManager.Sites.Add("Mysite", "c:\temp\", 8080);

2
这将适用于IIS 6.0及更高版本,它是用VB.Net编写的(如果需要,这很容易转换为C#)。我没有编写此代码,而是在此处找到它(但我确实编译了它以确保可以构建):http://www.gafvert.info/notes/VBNET-Create-Website-IIS6.htm

VB版本

Imports System.DirectoryServices
Imports System

Public Class IISAdmin
    Public Shared Function CreateWebsite(webserver As String, serverComment As String, serverBindings As String, homeDirectory As String) As Integer
        Dim w3svc As DirectoryEntry
        w3svc = New DirectoryEntry("IIS://localhost/w3svc")

        'Create a website object array
        Dim newsite() As Object
        newsite = New Object(){serverComment, new Object(){serverBindings}, homeDirectory}

        'invoke IIsWebService.CreateNewSite
        Dim websiteId As Object
        websiteId = w3svc.Invoke("CreateNewSite", newsite)

        Return websiteId

    End Function

    Public Shared Sub Main(args As String())
        Dim a As Integer
        a = CreateWebsite("localhost", "Testing.com", ":80:Testing.com", "C:\\inetpub\\wwwroot")
        Console.WriteLine("Created website with ID: " & a)
    End Sub

End Class

C#版本

public static int CreateWebsite(string webserver, string serverComment, string serverBindings, string homeDirectory)
{
   DirectoryEntry w3svc = new DirectoryEntry("IIS://localhost/w3svc");

   //Create a website object array
   object[] newsite = new object[]{serverComment, new object[]{serverBindings}, homeDirectory};

   //invoke IIsWebService.CreateNewSite
   object websiteId = (object)w3svc.Invoke("CreateNewSite", newsite);

   return (int)websiteId;
}

我也怀疑这需要从 Web 服务器运行,因为它指向 IIS://localhost。不确定如何在远程工作,这将取决于您的安全设置。 - John
@ Kirtan。嘿嘿。:) 我通常不在这里发布,这是一个偶然事件,我看到这个问题,想到我在某个地方见过它,嘿嘿。 - John
1
请避免在IIS 7及以上版本中使用WMI,使用ServerManager有更简单/更快速/更好/更可靠的方法来完成它。 - Carlos Aguilar Mares

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