/ / Як створити віртуальний каталог для веб-сервера? (ASP.NET) - asp.net, веб

Як створити віртуальний каталог для веб-сервера? (ASP.NET) - веб-сайт asp.net

Я сподіваюсь, хтось може допомогти.

Мені б хотілося створити virtualDirectory для сайту з наступними каталогами хост / папка1 / папка2 / default.aspx на веб-сервері.

З IIS це легко зробити, відредагувавши файл applicationHost.config:

<application path="/">
<virtualDirectory path="/" physicalPath="%SystemDrive%inetpubwwwroot" />
</application>

..але коли я спробую той самий метод і завантажую файл конфігурації на кореневий рівень веб-сервера та набираю віртуальний шлях, я отримую помилку 404b.

Я не хочу завжди вводити повний шлях, а просто хочу щось коротке, як хост / default.aspx, зберігаючи файли в їх поточному каталозі.

Як це робиться для веб-сервера?

Сподіваюся, моя проблема має сенс.

Дуже дякую!

Відповіді:

0 для відповіді № 1

Вам потрібно надати повну інформацію для свого сайту. критична інформація - номер порту, назва сайту та сам ідентифікатор (видаліть всі дублікати). У наступному прикладі я згадав його як "MySite", 2, 8080 відповідно.

            <sites>
<site name="MySite" id="2">
<application path="/">
<virtualDirectory path="/" physicalPath="%SystemDrive%inetpubwwwroot" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:8080:" />
</bindings>
</site>

<applicationDefaults applicationPool="DefaultAppPool" />
<virtualDirectoryDefaults allowSubDirConfig="true" />
</sites>

Те саме можна зробити в C #

            using Microsoft.Web.Administration;

using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection sitesSection = config.GetSection("system.applicationHost/sites");
ConfigurationElementCollection sitesCollection = sitesSection.GetCollection();

ConfigurationElement siteElement = sitesCollection.CreateElement("site");
siteElement["name"] = @"MySite";
siteElement["id"] = 2;
siteElement["serverAutoStart"] = true;

ConfigurationElementCollection bindingsCollection = siteElement.GetCollection("bindings");
ConfigurationElement bindingElement = bindingsCollection.CreateElement("binding");
bindingElement["protocol"] = @"http";
bindingElement["bindingInformation"] = @"*:8080:www.MySite.com";
bindingsCollection.Add(bindingElement);

ConfigurationElementCollection siteCollection = siteElement.GetCollection();
ConfigurationElement applicationElement = siteCollection.CreateElement("application");
applicationElement["path"] = @"/";
ConfigurationElementCollection applicationCollection = applicationElement.GetCollection();
ConfigurationElement virtualDirectoryElement = applicationCollection.CreateElement("virtualDirectory");
virtualDirectoryElement["path"] = @"/";
virtualDirectoryElement["physicalPath"] = @"C:Inetpubwwwroot";
applicationCollection.Add(virtualDirectoryElement);
siteCollection.Add(applicationElement);
sitesCollection.Add(siteElement);

serverManager.CommitChanges();
}

0 для відповіді № 2

Я не зовсім впевнений, що ви намагаєтеся зробити, але ви можете використовувати простір імен Microsoft.Web.Administration для встановлення IIS за допомогою коду.

Простір імен Microsoft.Web.Administration