2011-12-15 125 views
0

我希望有人能帮忙。如何为Web服务器创建虚拟目录? (ASP.NET)

我想为网站创建一个虚拟目录,并在网络服务器上指定以下目录 host/folder1/folder2/default.aspx。

在IIS,这可以通过编辑applicationHost.config文件很容易做到:

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

..但是,当我尝试同样的方法,并上传配置文件到web服务器的根目录,然后键入虚拟路径,我得到一个404b错误。

我不想总是键入完整的路径,而只是想要一些像host/default.aspx一样短的文件,同时将文件保留在当前目录中。

这是如何完成的网络服务器?

希望我的问题有道理。

非常感谢!

回答

0

您需要提供全部站点信息。关键信息是端口号,站点名称和标识本身(删除任何重复项)。下面的例子我分别提到它为“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(); 
      }