【问题标题】:How to create a virtual directory for web server? (ASP.NET)如何为 Web 服务器创建虚拟目录? (ASP.NET)
【发布时间】:2011-12-15 09:39:07
【问题描述】:

希望有人能帮忙。

我想为一个网站创建一个虚拟目录,其中包含以下目录 web 服务器上的 host/folder1/folder2/default.aspx。

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

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

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

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

这是如何为 Web 服务器完成的?

希望我的问题有意义。

非常感谢!

【问题讨论】:

    标签: asp.net web


    【解决方案1】:

    您需要为您的网站提供完整信息。关键信息是端口号、站点名称和 id 本身(删除任何重复项)。在下面的示例中,我分别将其称为“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();
              }
    

    【讨论】:

      【解决方案2】:

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

      Microsoft.Web.Administration Namespace

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-04
        • 1970-01-01
        • 2010-10-22
        相关资源
        最近更新 更多