2017-02-01 58 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

相关问题