/ / Jak utworzyć wirtualny katalog dla serwera WWW? (ASP.NET) - asp.net, sieć

Jak utworzyć katalog wirtualny dla serwera WWW? (ASP.NET) - asp.net, web

Mam nadzieję, że ktoś może pomóc.

Chciałbym utworzyć virtualDirectory dla witryny z powiedzmy następujące katalogi host / folder1 / folder2 / default.aspx na serwerze WWW.

W IIS można to łatwo zrobić, edytując plik applicationHost.config:

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

..Ale kiedy próbuję tej samej metody i przesyłam plik konfiguracyjny na poziom główny serwera WWW i wpisuję ścieżkę wirtualną, pojawia się błąd 404b.

Nie chcę zawsze wpisywać pełnej ścieżki, zamiast tego chcę czegoś krótkiego, na przykład host / default.aspx, jednocześnie zachowując pliki w bieżącym katalogu.

Jak to się robi dla serwera WWW?

Mam nadzieję, że mój problem ma sens.

Wielkie dzięki!

Odpowiedzi:

0 dla odpowiedzi № 1

Musisz podać pełne informacje o swojej witrynie. najważniejsze informacje to numer portu, nazwa witryny i sam identyfikator (usuń wszelkie duplikaty). w poniższym przykładzie wspomniałem o tym jako „MySite”, odpowiednio 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>

To samo można zrobić w 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 dla odpowiedzi nr 2

Nie jestem pewien, co próbujesz osiągnąć, ale możesz użyć przestrzeni nazw Microsoft.Web.Administration do skonfigurowania IIS za pomocą kodu.

Przestrzeń nazw Microsoft.Web.Administration