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