Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
子文件夹中的asp.net站点默认文档_Asp.net_Iis 7 - Fatal编程技术网

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

子文件夹中的asp.net站点默认文档,asp.net,iis-7,Asp.net,Iis 7,我的默认文档位于子文件夹而不是根文件夹中。如何在asp.net 2.0网站中将其设为默认文档 已尝试将iis7默认文档设置为“/pages/default.aspx” “~/pages/default.aspx”,但它不起作用。默认文档是特定于子文件夹的东西-您尝试执行的操作(直接)不会起作用。在根目录中设置一个default.htm文件,并将其刷新到真正的“主页” 你应该问的更好的问题是,你的主页究竟是如何脱离根目录的。默认文档与起始页不同。默认文档意味着如果我请求了mysite.com/so

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

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

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


你应该问的更好的问题是,你的主页究竟是如何脱离根目录的。

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

如果要将特定页面用作主页,请创建Default.aspx文件并将其写入其codebehind类:

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

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

理论上,您可以在目录中有一个Web.config文件,并使用设置默认文档。请参见此处:。

不幸的是,我无法让它在本地运行,但这是因为Visual Studio开发服务器不支持它。

您不需要创建虚拟的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");
}
说明:

  • 应用程序启动代码保证在应用程序启动时运行一次且仅运行一次
  • 第一行代码获取应用程序的URL路由集合
  • 第二行代码定义了一个新的路由,指向您希望的子文件夹中的内部页面
  • 第二个参数为空,表示在不请求特定页面且不存在默认文档时使用此路由
假设“index.html”是您想要的默认页面,它位于“Public”子文件夹中


与其指定“/Public/index.html”作为默认站点,不如尝试“Public/index.html”

在后台编写代码是不必要的拖延时间-只需要一行JavaScript即可。如果您想避免使用JS,html元刷新是另一种简单的仅使用html的解决方案。这是正确的解决方案。这里的目标不是为所有文件夹启用http重定向,而是确保如果用户访问该文件夹,他们将被重定向到子文件夹中的特定文档。由于他们没有针对特定的文档,您必须允许在原始文件夹中调用默认文档(设置“subfolder/default.aspx”这样的默认文档将提供文件,但会断开链接,因为浏览器仍会认为它位于父文件夹中),然后仅针对该默认文档,让它触发重定向。除了JavaScript,就是这样。更好的是,您可以在这里做完全相同的事情,而无需编写任何代码。不要将ProcessRequest处理程序放在default.aspx页面中,只需将default.aspx留空,并在web.config文件中,使用“location”标记将重定向指定给该页面,如下所示:
如果发现,如果尝试指定默认文档,如“subfolder/subfolder/file”,则会找到并提供内容,但是所有链接都断开了,因为web浏览器仍然认为它位于原始父文件夹中。正确执行此操作的唯一方法是通过JavaScript或web服务器响应进行HTTP重定向。触发重定向响应IMO的最佳方法是通过web.config中的位置标记,该标记仅为根目录中的默认文档触发重定向,而不是打开整个文件夹的重定向。只需在根文件夹和web.config文件中将default.aspx文件留空,在我的开发环境(VS2015CE)RouteTable中,使用如下“location”标记将重定向特定于该页面:
。Routes不是一个类型,而是一个属性,因此它是RouteTable.Routes.MapPageRoute(“DefaultRoute”,string.Empty,~/YourDesiredSubFolder/YourDesiredDocument.aspx”);