0

Я создал новое веб-приложение ASP.NET MVC, которое отвечает за управление в школе. Теперь я хочу создать новое веб-приложение, которое поможет развернуть это приложение с новым поддоменом и новой базой данных для нового зарегистрированного клиента. Каков наилучший подход для выполнения этой работы? У меня есть небольшая информация об этом типе приложений, в соответствии с этой информацией, я думаю, что это связано с услугами, предоставляемыми такими веб-хостинговыми компаниями, как Microsoft Azure, которые программно создают создание и настройку виртуальных машин с возможностью развертывания приложения для этого новые созданные виртуальные машины также программно! я пишу?! Если вы все еще не поняли мою проблему, попробуйте посетить shopify (https://www.shopify.com/), который обеспечивает создание магазина для не профессионалов так же, как я хочу в моем проекте. СпасибоПрограммно создавая несколько экземпляров веб-приложения asp с разными именами доменов и в разных виртуальных машинах

ответ

1

Код ниже создает новый виртуальный каталог на хосте IIS.

/// <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; 
    } 

Код ниже создает новый веб-сайт на II хосте.

/// <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; 
    } 

Код ниже устанавливает номер порта на веб-сайте хоста IIS.

/// <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; 
    } 

Обратите внимание, что localMachine.Properties["ServerBindings"][0] = относится к Bindings в Advanced Settings вашего веб-сайта в IIS.

AdvancedSettings