0

Ich habe eine neue ASP.NET MVC-Webanwendung erstellt, die für das Schulmanagement zuständig ist. Jetzt möchte ich eine neue Web-App erstellen, die dabei hilft, diese App mit neuer Sub-Domain und neuer Datenbank für neu registrierte Clients bereitzustellen. Was ist der beste Ansatz für diese Arbeit? Ich habe kleine Informationen über diese Art von Anwendungen, nach diesen Informationen denke ich, es ist etwas mit Dienstleistungen von Webhosting-Unternehmen wie Microsoft Azure, die Erstellung und Konfiguration von virtuellen Maschinen programmatisch mit der Fähigkeit, App zu diesem bereitstellen bereitstellt neu erstellte VMs auch programmatisch! schreibe ich? Wenn Sie mein Problem immer noch nicht verstanden haben, versuchen Sie bitte shopify (https://www.shopify.com/) zu besuchen, das die Schaffung von Geschäften für Nicht-Profis mit der gleichen Weise, wie ich in meinem Projekt möchte, bietet. Vielen DankProgrammgesteuertes Erstellen mehrerer asp-Web-App-Instanzen mit verschiedenen Domänennamen und verschiedenen virtuellen Maschinen

Antwort

1

Der folgende Code erstellt ein neues virtuelles Verzeichnis auf dem IIS-Host.

/// <summary> 
    /// Create a new virtual directory on the iis host. 
    /// </summary> 
    /// <param name="iisHostPath">The iis host path.</param> 
    /// <param name="physicalPath">The physical path to the directory.</param> 
    /// <param name="virtualDirectoryName">The virtual directory name.</param> 
    /// <param name="defaultDocument">The defualt document to set.</param> 
    /// <returns>True if the virtual directory was created else false.</returns> 
    /// <example> 
    /// iisHostPath : [servername]/[service]/[websiteID]/[Root] : localhost/W3SVC/1/Root 
    /// defaultDocument : [document] : default.aspx 
    /// </example> 
    /// <remarks> 
    /// <para>iisHostPath : [servername]/[service]/[websiteID]/[Root] : localhost/W3SVC/1/Root</para> 
    /// <para>defaultDocument : [document] : default.aspx</para> 
    /// </remarks> 
    public virtual bool CreateVirtualDirectory(string iisHostPath, string physicalPath, 
     string virtualDirectoryName, string defaultDocument) 
    { 
     // Validate the inputs. 
     if (String.IsNullOrEmpty(iisHostPath)) 
      throw new System.ArgumentNullException("IIS path can not be null.", 
       new System.Exception("A valid IIS path should be specified.")); 

     // Validate the inputs. 
     if (String.IsNullOrEmpty(physicalPath)) 
      throw new System.ArgumentNullException("Physical can not be null.", 
       new System.Exception("A valid physical path should be specified.")); 

     // Validate the inputs. 
     if (String.IsNullOrEmpty(virtualDirectoryName)) 
      throw new System.ArgumentNullException("Virtual directory name can not be null.", 
       new System.Exception("A valid virtual directory name should be specified.")); 

     // Validate the inputs. 
     if (String.IsNullOrEmpty(defaultDocument)) 
      throw new System.ArgumentNullException("Default document can not be null.", 
       new System.Exception("A valid default document should be specified.")); 

     // Create a new directory entry 
     // instance to the iis machine. 
     DirectoryEntry localMachine = new DirectoryEntry(
      "IIS://" + iisHostPath); 

     // Add the iis virtual directory 
     // to the iis collection. 
     DirectoryEntry virtName = localMachine.Children.Add(virtualDirectoryName, "IIsWebVirtualDir"); 

     // Commit the changes for the account. 
     virtName.CommitChanges(); 

     // Assign default properties. 
     virtName.Properties["Path"][0] = physicalPath; 
     virtName.Properties["DefaultDoc"][0] = defaultDocument; 
     virtName.Properties["AccessScript"][0] = true; 

     // These properties are necessary for an application to be created. 
     virtName.Properties["AppFriendlyName"][0] = virtualDirectoryName; 
     virtName.Properties["AppIsolated"][0] = "1"; 
     virtName.Properties["AppRoot"][0] = "/LM/" + iisHostPath; 

     // Commit the changes for the account. 
     virtName.CommitChanges(); 

     // Close the connections. 
     virtName.Close(); 
     localMachine.Close(); 

     // Return success. 
     return true; 
    } 

Der folgende Code erstellt eine neue Website auf dem II-Host.

/// <summary> 
    /// Create a new web site on the iis host. 
    /// </summary> 
    /// <param name="iisHostPath">The iis host path.</param> 
    /// <param name="websiteID">The unique web site id.</param> 
    /// <param name="websiteName">The name of the web site.</param> 
    /// <param name="physicalPath">The physical path to the root directory.</param> 
    /// <returns>True if the web site was created else false.</returns> 
    /// <example> 
    /// iisHostPath : [servername]/[service] : localhost/W3SVC 
    /// websiteID : [number] : 454354 
    /// </example> 
    /// <remarks> 
    /// <para>iisHostPath : [servername]/[service] : localhost/W3SVC</para> 
    /// <para>websiteID : [number] : 454354</para> 
    /// </remarks> 
    public virtual bool CreateWebSite(string iisHostPath, 
     string websiteID, string websiteName, string physicalPath) 
    { 
     // Validate the inputs. 
     if (String.IsNullOrEmpty(iisHostPath)) 
      throw new System.ArgumentNullException("IIS path can not be null.", 
       new System.Exception("A valid IIS path should be specified.")); 

     // Validate the inputs. 
     if (String.IsNullOrEmpty(websiteID)) 
      throw new System.ArgumentNullException("Web site id can not be null.", 
       new System.Exception("A valid web site id should be specified.")); 

     // Validate the inputs. 
     if (String.IsNullOrEmpty(websiteName)) 
      throw new System.ArgumentNullException("Web site name can not be null.", 
       new System.Exception("A valid web site name should be specified.")); 

     // Validate the inputs. 
     if (String.IsNullOrEmpty(physicalPath)) 
      throw new System.ArgumentNullException("Physical can not be null.", 
       new System.Exception("A valid physical path should be specified.")); 

     // Create a new directory entry 
     // instance to the iis machine. 
     DirectoryEntry localMachine = new DirectoryEntry(
      "IIS://" + iisHostPath); 

     // Add the iis web site 
     // to the iis collection. 
     DirectoryEntry siteName = localMachine.Children.Add(websiteID, "IIsWebServer"); 

     // Assign the web site properties. 
     siteName.Properties["ServerComment"][0] = websiteName; 
     siteName.CommitChanges(); 

     // Commit the changes for the account. 
     siteName.CommitChanges(); 

     // Add the iis web site 
     // to the iis collection. 
     DirectoryEntry rootName = siteName.Children.Add("Root", "IIsWebVirtualDir"); 

     // Assign the web site properties. 
     rootName.Properties["Path"][0] = physicalPath; 
     rootName.Properties["AccessScript"][0] = true; 

     // Commit the changes for the account. 
     rootName.CommitChanges(); 

     // Close the connections. 
     rootName.Close(); 
     siteName.Close(); 
     localMachine.Close(); 

     // Return success. 
     return true; 
    } 

Der folgende Code legt die Portnummer auf einer Website auf dem IIS-Host fest.

/// <summary> 
    /// Set a port number to a web site on the iis host. 
    /// </summary> 
    /// <param name="iisHostPath">The iis host path.</param> 
    /// <param name="portNumber">The port number.</param> 
    /// <returns>True if the port number was assigned else false.</returns> 
    /// <example> 
    /// iisHostPath : [servername]/[service]/[websiteID] : localhost/W3SVC/1 
    /// </example> 
    /// <remarks> 
    /// <para>iisHostPath : [servername]/[service]/[websiteID] : localhost/W3SVC/1</para> 
    /// </remarks> 
    public virtual bool SetWebSitePortNumber(string iisHostPath, int portNumber) 
    { 
     // Validate the inputs. 
     if (String.IsNullOrEmpty(iisHostPath)) 
      throw new System.ArgumentNullException("IIS path can not be null.", 
       new System.Exception("A valid IIS path should be specified.")); 

     // Validate the inputs. 
     if (portNumber < 1) 
      throw new System.ArgumentNullException("Port number not valid.", 
       new System.Exception("The port number must be greater than zero.")); 

     // Create a new directory entry 
     // instance to the iis machine. 
     DirectoryEntry localMachine = new DirectoryEntry(
      "IIS://" + iisHostPath); 

     // Set the web site port number. 
     localMachine.Properties["ServerBindings"][0] = ":" + portNumber + ":"; 

     // Commit the changes for the account. 
     localMachine.CommitChanges(); 

     // Close the connections. 
     localMachine.Close(); 

     // Return success. 
     return true; 
    } 

Beachten Sie, dass localMachine.Properties["ServerBindings"][0] = im Advanced Settings Ihrer Website in IIS zu Bindings bezieht.

AdvancedSettings

Verwandte Themen