是否有任何部分或代码允许我们在web.config
设置默认页面?
例如,当人们首次访问我的网站时,我希望他们看到CreateThing.aspx
而不是Default.aspx
。
我已经知道的解决方案:
把这行代码=> Response.Redirect("CreateThings.aspx")
Default.aspx
事件中的Page_Load
,但此方法真的很天真。
我们可以使用IIS(默认页面配置),但我想在我的ASP.NET应用程序上做同样的事情。
这可能是目前的另一种解决方案:
<defaultDocument>
<files>
<clear />
<add value="Default.aspx" />
<add value="Default.htm" />
<add value="Default.asp" />
<add value="index.htm" />
<add value="index.html" />
<add value="iisstart.htm" />
</files>
</defaultDocument>
答案 0 :(得分:236)
如果使用IIS 7或IIS 7.5,则可以使用
<system.webServer>
<defaultDocument>
<files>
<clear />
<add value="CreateThing.aspx" />
</files>
</defaultDocument>
</system.webServer>
http://www.iis.net/ConfigReference/system.webServer/defaultDocument
答案 1 :(得分:23)
Tip #84: Did you know… How to set a Start page for your Web Site in Visual Web Developer?
只需右键单击要作为起始页面的页面,然后说“设置为起始页面”。
正如Adam Tuliper - MSFT下面的评论所述,这仅适用于调试,而不适用于部署。
答案 2 :(得分:9)
将default.aspx映射为 HttpHandler 路由,并从HttpHandler中重定向到CreateThings.aspx。
<add verb="GET" path="default.aspx" type="RedirectHandler"/>
确保Default.aspx不存在 在您的应用程序根目录。 如果它存在于物理上 HttpHandler将不会被给予任何 有机会执行。物理文件 覆盖HttpHandler映射。
此外,您可以将其重复用于default.aspx以外的页面。
<add verb="GET" path="index.aspx" type="RedirectHandler"/>
// App_Code中的RedirectHandler.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Summary description for RedirectHandler
/// </summary>
public class RedirectHandler : IHttpHandler
{
public RedirectHandler()
{
//
// TODO: Add constructor logic here
//
}
#region IHttpHandler Members
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
context.Response.Redirect("CreateThings.aspx");
context.Response.End();
}
#endregion
}
答案 3 :(得分:4)
如果您使用的是表单身份验证,可以尝试以下代码:
<authentication mode="Forms">
<forms name=".FORM" loginUrl="Login.aspx" defaultUrl="CreateThings.aspx" protection="All" timeout="30" path="/">
</forms>
</authentication>
答案 4 :(得分:3)
如果您在网站中使用登录页面,请转到web.config文件
<authentication mode="Forms">
<forms loginUrl="login.aspx" defaultUrl="index.aspx" >
</forms>
</authentication>
将您的身份验证标记替换为上面(其中index.aspx将是您的启动页面)
还有一件事要写在
里面的web.config文件中<configuration>
<system.webServer>
<defaultDocument>
<files>
<clear />
<add value="index.aspx" />
</files>
</defaultDocument>
</system.webServer>
<location path="index.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
</configuration>
答案 5 :(得分:3)
您可以使用web.config
覆盖IIS默认文档设置<system.webServer>
<defaultDocument>
<files>
<clear />
<add value="DefaultPageToBeSet.aspx" />
</files>
</defaultDocument>
</system.webServer>
或者使用IIS,请参阅参考链接http://www.iis.net/configreference/system.webserver/defaultdocument
答案 6 :(得分:1)
我更喜欢使用以下方法:
system.webServer>
<defaultDocument>
<files>
<clear />
<add value="CreateThing.aspx" />
</files>
</defaultDocument>
</system.webServer>
答案 7 :(得分:1)
我已经完成了上述所有解决方案,但它没有用。
我的默认页面不是aspx页面,它是一个html页面。
这篇文章解决了这个问题。 https://weblog.west-wind.com/posts/2013/aug/15/iis-default-documents-vs-aspnet-mvc-routes
基本上,在我的\ App_Start \ RouteConfig.cs文件中,我不得不添加一行:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute(""); // This was the line I had to add here!
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
希望这对某人有所帮助,我找到答案时花了很多时间。