none
Nom de l'Application - répertoire virtuel RRS feed

  • Question

  • Lorsque j'exécute le code ci-dessous

     

    Code Snippet

    Private Sub ServicesWebIIS(ByVal Suppression As Boolean)
            Dim txtVirtDirName As String = "V" & ls_Graduation.Version
            Dim txtPath As String = "D:\Visual Studio 2005\Projects\ServicesWeb\"
     
            Dim IISSchema As New System.DirectoryServices.DirectoryEntry("IIS://localhost/Schema/AppIsolated")
            Dim CanCreate As Boolean = _
                Not IISSchema.Properties("Syntax").Value.ToString.ToUpper() = "BOOLEAN"
            IISSchema.Dispose()
            Dim AppName As String = txtVirtDirName
            Dim path As String = txtPath & txtVirtDirName
     
            If CanCreate Then
                Dim PathCreated As Boolean
     
                Dim IISAdmin As New System.DirectoryServices.DirectoryEntry("IIS://localhost/W3SVC/1/Root")
                IISAdmin.Properties.Item("Path").Value = txtPath
                IISAdmin.CommitChanges()
              
                'make sure folder exists
                If Not System.IO.Directory.Exists(path) Then
                    System.IO.Directory.CreateDirectory(path)
                    PathCreated = True
                End If
                Dim VDir As System.DirectoryServices.DirectoryEntry = Nothing
                Dim bAlreadyThere As Boolean = False
                'If the virtual directory already exists then delete it
                For Each VD As System.DirectoryServices.DirectoryEntry In _
                        IISAdmin.Children()
                    If VD.Name.ToUpper = AppName.ToUpper Then
                        IISAdmin.Invoke("Delete", New String() _
                        {VD.SchemaClassName, AppName})
                        IISAdmin.CommitChanges()
                        VDir = VD
                        bAlreadyThere = False
                        Exit For
                    End If
                Next VD
                If Suppression = False Then
                    'Create and setup new virtual directory
                    If (Not bAlreadyThere) Then
                        VDir = IISAdmin.Children.Add(AppName, "IIsWebVirtualDir")
                    End If
     
                    MsgBox(AppName)
                    VDir.Properties("Path").Item(0) = path
                    VDir.Properties("AppFriendlyName")(0) = txtVirtDirName
                    VDir.Properties("EnableDirBrowsing").Item(0) = True
                    VDir.Properties("AccessRead").Item(0) = True
                    VDir.Properties("AccessExecute").Item(0) = True
                    VDir.Properties("AccessWrite").Item(0) = False
                    VDir.Properties("AccessScript").Item(0) = True
                    VDir.Properties("AuthNTLM").Item(0) = True 'Integreted Windows(Authontocation)
                    VDir.Properties("AuthAnonymous").Item(0) = False
                    VDir.CommitChanges()
     
                    If Not bAlreadyThere Then VDir.Invoke("AppCreate", 1)
                    Dim prcProcess As System.Diagnostics.Process
                    prcProcess = System.Diagnostics.Process.Start(System.Environment.GetEnvironmentVariable("windir") + _
                                "\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis", _
                                " -s /W3SVC/1/Root/" + txtVirtDirName)
                    prcProcess.WaitForExit()
                End If
            End If
         End Sub

     

     

    ou ls_Graduation.Version=9.01

    Le champ "Nom de l'application:" est vide, comment dois-je faire pour remplir le champ "Nom de l'application:" à l'aide de code VB .NET?

    Merci

    mardi 13 janvier 2009 14:15

Toutes les réponses

  • Salut,

     

    Ce n'est pas des objets que j'ai l'habitude de manipuler (ça me permet même de découvrir qu'il y aurait un lien entre ActiveDirectory et IIS?), mais voici ce que j'en pense:

     

    d'après l'aide sur MSDN de la méthode Add, la chaîne donnant le nom doit être formatée à la sauce LDAP:

    Code Snippet

    ' Create a new entry 'Sample' in the container.
    Dim myDirectoryEntry As DirectoryEntry = myEntries.Add("CN=Sample", myDE.SchemaClassName)

     

     

    donc j'aurais tendance à modifier ton code de la sorte:

     

    Code Snippet

                'Create and setup new virtual directory
                If (Not bAlreadyThere) Then
                    VDir = IISAdmin.Children.Add("CN=" & AppName, "IIsWebVirtualDir")
                End If

     

     

    Petite remarque en passant : je ne vois pas l'utilité de ta variable bAlreadyThere (qui vaut toujours False) ni du test lié dans le code ci-dessus.

     

    bon courage!

     

    Ced.

    mercredi 14 janvier 2009 08:46
  • Ca ne fonctionne pas, j'obtiens une erreur lorsque j'ajoute "CN=" devant le nom de l'application.

    mardi 27 janvier 2009 16:13