c# - 没有页面名称的 url 重写

标签 c# iis-6 url-rewriting asp.net-3.5 url-routing

我想将这 3 个路径路由到默认的基本 url 路径。

www.mysite.com/page1.aspx
www.mysite.com/page2.aspx
www.mysite.com/page3.aspx

我想在地址栏中显示这 3 个页面,如下所示:www.mysite.com

我的asp.net项目中只有这3个页面。

如何在带有 IIS 6.0 的 asp.net 3.5 sp1 中执行此操作。

 void Application_BeginRequest(object sender, EventArgs e)
 {
            switch (HttpContext.Current.Request.Url.AbsolutePath.ToLower())
            { 
                case "/page1.aspx":
                    HttpContext.Current.RewritePath("~/default.aspx");
                    break;                
                 case "/page2.aspx":
                    HttpContext.Current.RewritePath("~/default.aspx");
                    break;                 
                 case "/page3.aspx":
                    HttpContext.Current.RewritePath("~/default.aspx");
                    break;             
            }
  }

使用此代码,发生错误:

Server Error in '/' Application.
The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable.  Please review the following URL and make sure that it is spelled correctly.

Requested URL: /default.aspx

问题是重写 url。它正在搜索 default.aspx 文件。没有 default.aspx 文件。有 page1.aspx 文件。

为什么搜索 default.aspx ?我只想重写路径..

最佳答案

您对 HttpContext.Current.RewritePath 的调用是说“如果有人要求 /page1.aspx(或 /page2.aspx/page3.aspx),而不是为他们提供 ~/default.aspx”。

自然地,如果 ~/default.aspx 不存在,这将抛出 404。

你想做什么?你说你“想将这 3 条路径路由到默认的基本 url 路径”,但是如果 ~/default.aspx 不存在,那 那个路径是什么?

关于c# - 没有页面名称的 url 重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5089639/

相关文章:

iis - 上传时无法打开网站上的其他页面?

c# - 如何使用PLSQL更新指定列的数据库表的行条目

sql-server - 验证 Windows Mobile 6 设备

c# - 应用程序可以在不传递 Application_End 或 Application_Error 的情况下返回 "die"吗?

java - 如何让 UrlRewrite 更改我的地址?

regex - .htaccess 重定向 : convert path to GET variables?

asp.net - IIS URL 重写和 Web.config

c# - 使用c#自动登录网站

c# - 将空值插入整数列

c# - SQLite,在C#中创建一个带有变量名的表