asp.net站点默认文件在子文件夹中

时间:2009-01-07 19:43:49

标签: asp.net iis-7

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

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

5 个答案:

答案 0 :(得分:16)

默认文档与起始页面不同。默认文档表示如果我请求mysite.com/somefolder并且未指定文件,则应显示IIS显示的文件。

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

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

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

答案 1 :(得分:8)

您无需创建虚拟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路由集合。
  • 第二行代码,定义了一个指向您希望的子文件夹中的内部页面的新路径。
  • 第二个参数为空,表示在没有请求特定页面且没有默认文档存在的情况下使用此路由。

答案 2 :(得分:2)

默认文档是特定于子文件夹的内容 - 您尝试执行的操作不会(直接)工作。在root中设置default.htm文件,并将其刷新到真正的“主页”。

你应该问的更好的问题是你的主页是如何离开根目录的。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

Say" index.html"是您想要的默认页面,它出现在" Public"子目录。

而不是指定" /Public/index.html"作为默认网站,请尝试" Public / index.html"