如何为Web服务器创建虚拟目录? (ASP.NET)

时间:2011-12-15 09:39:07

标签: asp.net web

我希望有人可以提供帮助。

我想为具有以下目录的网站创建virtualDirectory web服务器上的host / folder1 / folder2 / default.aspx。

使用IIS,可以通过编辑applicationHost.config文件轻松完成:

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

..但是当我尝试相同的方法并将配置文件上传到网络服务器的根级别并输入虚拟路径时,我收到404b错误。

我不想总是输入完整路径,而只是想要像host / default.aspx那样简短,同时将文件保存在当前目录中。

如何为Web服务器完成此操作?

希望我的问题有道理。

非常感谢!

2 个答案:

答案 0 :(得分:0)

我不太确定你想要完成什么,但你可以使用Microsoft.Web.Administration命名空间来通过代码设置IIS。

Microsoft.Web.Administration Namespace

答案 1 :(得分:0)

您需要提供您网站的完整信息。关键信息是端口号,站点名称和ID本身(删除任何重复项)。以下示例我分别将其称为“MySite”,2,88080。

            <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();
          }