14

我的默认文档位于子文件夹中,而不是根目录中,如何在 asp.net 2.0 网站中将其设为默认值。

尝试将 iis7 默认文档设置为 '/pages/default.aspx' '~/pages/default.aspx' 但它不起作用。

4

5 回答 5

17

默认文档与起始页不同。默认文档表示如果我请求mysite.com/somefolder但未指定文件,IIS 应显示哪个文件。

如果您想使用特定页面作为主页,请创建一个 Default.aspx 文件并将其写入它的代码隐藏类中:

public override void ProcessRequest(HttpContext context) {
    context.Response.Redirect("pages/default.aspx", true);
}

由于客户端可能禁用了 Javascript,因此服务器端方法会更可靠。但是,最好发出永久重定向而不是简单的Response.Redirect. 从 SEO 的角度来看,使用 JS 也很糟糕。

于 2009-01-07T19:56:42.770 回答
9

您不需要创建一个虚拟 Default.aspx 页面。

在 Global.asax.cs 文件中,编写以下内容:

public void Application_Start(object sender, EventArgs e)
{
    var routeCollection = RouteTable.Routes;
    routeCollection.MapPageRoute("DefaultRoute", string.Empty, "~/YourDesiredSubFolder/YourDesiredDocument.aspx");
}

解释:

  • Application_Start 代码保证在应用程序启动时运行一次且仅运行一次。
  • 第一行代码获取应用程序的 URL 路由集合。
  • 第二行代码定义了一个新路由,指向您希望的子文件夹中的内页。
  • 第二个参数为空,表示在没有请求特定页面且不存在默认文档时使用此路由。
于 2013-06-25T19:36:28.413 回答
2

默认文档是特定于子文件夹的东西-您尝试做的事情不会(直接)起作用。在根目录中设置一个 default.htm 文件,并让它刷新到您真正的“主页”。

您应该问的更好的问题是您的主页到底是如何脱离根目录的。

于 2009-01-07T19:51:59.567 回答
0

理论上,您可以在目录中有一个 Web.config 文件并使用defaultDocument 元素来设置默认文档。见这里:https ://stackoverflow.com/a/2012079/125938 。
不幸的是,我无法让它自己在本地工作,但这可能是因为 Visual Studio 开发服务器不支持它。

于 2012-07-18T13:25:03.443 回答
0

说“index.html”是您想要的默认页面,它存在于“公共”子文件夹中。

不要将“/Public/index.html”指定为默认站点,而是尝试“Public/index.html”

于 2018-06-11T09:29:34.500 回答