2017-02-01 64 views
0

我創建了一個新的ASP.NET MVC web應用程序,負責學校管理。現在我想創建新的Web應用程序,幫助部署這個應用程序與新的註冊客戶端的新的子域和新的數據庫。 做這項工作的最佳方法是什麼? 我有關於這種類型的應用程序的小信息,根據這些信息,我認爲這是一些有關的服務提供的網絡託管公司提供的服務,如Microsoft Azure,它提供了虛擬機的創建和配置的程序化能夠部署應用程序新創建的虛擬機也編程!我寫信嗎?! 如果您仍然不明白我的問題,請嘗試訪問shopify(https://www.shopify.com/),它以非常專業的方式爲我的項目提供商店創建。 謝謝編程創建具有不同域名和不同虛擬機的asp web應用程序的多個實例

回答

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在IIS你的網站的Advanced Settings

AdvancedSettings

相關問題