在子文件夹中运行 ASP.NET 网站

Posted

技术标签:

【中文标题】在子文件夹中运行 ASP.NET 网站【英文标题】:Run an ASP.NET website in a subfolder 【发布时间】:2010-12-03 17:10:17 【问题描述】:

有没有办法在网站的子文件夹中运行 ASP.NET 网站?

例如,假设我想在我的网站上名为“wiki”的文件夹中运行螺旋转 wiki (http://www.screwturn.eu/),我可以更改螺旋转网站的 web.config 以告诉它它正在运行“维基”文件夹? (就像说 "~/" = "/wiki/")

然后,wiki 会在“/wiki/bin”中的“~/bin”中找到其程序集,并且对于新根目录下的所有其他文件夹也是如此。

【问题讨论】:

我最终为 wiki 创建了一个新的子域,因此该站点将成为一个根网站。 【参考方案1】:

小菜一碟,您可以在 IIS 网站的根目录中添加一个虚拟目录并将其指向您网站的路径,或者将其放置在网站根目录中的一个物理目录中,然后将其变成一个应用程序 -在 IIS 管理控制台中单击它,转到属性并单击应用程序名称旁边的“创建”。

【讨论】:

虽然我没提过,但是我对web服务器没有控制权。但这是最接近我采用的解决方案,即创建子域 (wiki.mydomainname.org)。我会将此标记为答案,因为如果我可以访问 ISP 框上的 IIS,您的建议是正确的。 我对此感到厌烦,但现在 IIS 抱怨无法找到登录页面的类后面的代码。子站点是否继承与父站点相同的 dll?因为子站点的登录页面类被编译到主站点dll中,因为它在VS中都是同一个项目。 文件夹中需要一个完整的、独立的应用程序,否则它将寻找一个不存在的 bin 目录。 如果有人无权访问 IIS 设置怎么办?我无权访问根应用程序的 web.config。有没有办法在子目录中制作 web 应用程序【参考方案2】:

您需要在根 web.config 文件中停止配置继承,以便 wiki web.config 不会从根 web.config 读取任何内容。

【讨论】:

以上链接的实时站点已失效。缓存的副本可以找到here 由于 archive.org 的 robots.txt 政策,缓存副本已被提取。 见***.com/questions/782252/…【参考方案3】:

正如其他人指出的那样。基本上你需要把它放在你的子应用Web.config中,当然你还需要配置域(子域等),IIS设置也是如此。

<configuration>    
  <location path="." inheritInChildApplications="false">

    //your code here

    <system.web>
      //your code here
    </system.web>

    //your code here

  </location>     
</configuration>

【讨论】:

如果您的 web.config 中有 &lt;configSection&gt;'s,那么它们应该在 &lt;location&gt; 标记之外。【参考方案4】:

我最近不得不这样做,并且将 wiki 文件夹设为应用程序(如前面的答案中所建议的那样),我还必须在 Wiki 应用程序的顶层放置一个虚拟的“App_Themes -> Default”文件夹,因为父应用的 Web.config 中是否存在 &lt;pages styleSheetTheme="default" theme="default"&gt; 标记。小技巧,但这是我喜欢在 Asp.Net 中配置样式的方式,我不想改变它。

【讨论】:

【参考方案5】:

简短的回答是可以。无需在 Web.Config 中指定文件夹的位置。

【讨论】:

我假设您在 wiki 文件夹中有一个 web.config。 “/wiki/bin”由运行时自动定位。 但页面加载失败,声称“文件'/MasterPage.master'不存在。”。 aspx 页面指令具有 MasterPageFile="~/MasterPage.master"。问题是我如何将其设置为“/wiki/MasterPage.master”而不是“/MasterPage.master”。 “wiki”文件夹是否配置为 IIS 中的应用程序? 不,它只是在运行它自己的网站的主应用程序文件夹下的一个文件夹。 “wiki”会成为一个独立的应用程序吗?如果是这样,请将文件夹设置为应用程序。这会将文件夹与父文件夹隔离。

以上是关于在子文件夹中运行 ASP.NET 网站的主要内容,如果未能解决你的问题,请参考以下文章

asp.net怎么配置IIS6

ASP.NET 网站中出现意外的第二个 AppDomain

如何在 ASP.NET 网站上显示来自硬盘驱动器文件夹的图像列表?

运行 EXE 文件的 ASP.NET

如何将c#做好的asp.net网站部署到iis上

Asp net core 在运行时读取或写入视图