Как создать виртуальный каталог для веб-сервера?(ASP.NET) - PullRequest
0 голосов
/ 15 декабря 2011

Я надеюсь, что кто-то может помочь.

Я хотел бы создать виртуальный каталог для сайта, скажем, со следующими каталогами host / folder1 / folder2 / default.aspx на веб-сервере.

С IIS это можно легко сделать, отредактировав файл applicationHost.config:

<application path="/">
 <virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" />
</application>

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

Я не хочу всегда вводить полный путь, вместо этого просто хочу что-то короткое, например host / default.aspx, сохраняя файлы в их текущем каталоге.

Как это делается для веб-сервера?

Надеюсь, моя проблема имеет смысл.

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 15 декабря 2011

Вам необходимо предоставить полную информацию для вашего сайта.критическая информация - это номер порта, имя сайта и сам идентификатор (удалите все дубликаты).В следующем примере я упомянул его как «MySite», 2, 8080 соответственно.

            <sites>
               <site name="MySite" id="2">
                  <application path="/">
                     <virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" />
                  </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:\Inetpub\wwwroot";
             applicationCollection.Add(virtualDirectoryElement);
             siteCollection.Add(applicationElement);
             sitesCollection.Add(siteElement);

             serverManager.CommitChanges();
          }
0 голосов
/ 15 декабря 2011

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

Пространство имен Microsoft.Web.Administration

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...