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

mam*_*amu 14 asp.net iis-7

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

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

Meh*_*ari 17

默认文档与起始页面不同.默认文档意味着如果我请求mysite.com/somefolder并且没有指定文件,IIS应显示哪个文件.

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

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

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

  • 更好的是,你可以在这里完成同样的事情而无需编写任何代码.只需将default.aspx保留在default.aspx页面中,只需将default.aspx留空,并在web.config文件中,使用"location"标记对该页面进行特定的重定向:`<configuration> <location path ="default.aspx"> <system.webServer> <httpRedirect enabled ="true"destination ="pages/default.aspx"exactDestination ="true"httpResponseStatus ="Found"/></system.webServer></location > </配置>` (4认同)

Moh*_*mad 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");
}
Run Code Online (Sandbox Code Playgroud)

说明:

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