создание виртуального каталога в IIS 7.0 с использованием c # .net - PullRequest
4 голосов
/ 18 ноября 2009

Я пытаюсь создать виртуальный каталог в IIS 7.0, используя c # .net или vb.net,

Может ли кто-нибудь направить меня с этим

Ответы [ 2 ]

11 голосов
/ 18 ноября 2009

Субаш,

Как говорит Слагстер здесь , на этой странице есть все, что вам нужно: 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.

Также обратите внимание, что установка виртуальных каталогов на IIS6 и IIS7 отличается, когда вы используете API. Сначала для установки с 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 голосов
/ 18 ноября 2009

На этой странице есть почти все, что вам нужно:

http://forums.iis.net/t/1139885.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...