asp.net – 使用URL Rewrite和404.aspx时的回发问题
发布时间:2020-12-16 09:18:10 所属栏目:asp.Net 来源:网络整理
导读:我在我的网站上使用URL重写来获取以下URL: http://mysite.com/users/john 代替 http://mysite.com/index.aspx?user=john 要使用IIS6实现这种无扩展的重写并且无法访问托管服务器,我使用“404-approach”.当服务器找不到请求时,执行映射的404页面,因为这是一
我在我的网站上使用URL重写来获取以下URL:
http://mysite.com/users/john 代替 http://mysite.com/index.aspx?user=john 要使用IIS6实现这种无扩展的重写并且无法访问托管服务器,我使用“404-approach”.当服务器找不到请求时,执行映射的404页面,因为这是一个aspx页面,可以执行重写(我可以使用托管服务上的控制面板设置404映射). 这是Global.asax中的代码: protected void Application_BeginRequest(object sender,EventArgs e) { string url = HttpContext.Current.Request.Url.AbsolutePath; if (url.Contains("404.aspx")) { string[] urlInfo404 = Request.Url.Query.ToString().Split(';'); if (urlInfo404.Length > 1) { string requestURL = urlInfo404[1]; if (requestURL.Contains("/users/")) { HttpContext.Current.RewritePath("~/index.aspx?user=" + GetPageID(requestURL)); StoreRequestURL(requestURL); } else if (requestURL.Contains("/picture/")) { HttpContext.Current.RewritePath("~/showPicture.aspx?pictureID=" + GetPageID(requestURL)); StoreRequestURL(requestURL); } } } } private void StoreRequestURL(string url) { url = url.Replace("http://",""); url = url.Substring(url.IndexOf("/")); HttpContext.Current.Items["VirtualUrl"] = url; } private string GetPageID(string requestURL) { int idx = requestURL.LastIndexOf("/"); string id = requestURL.Substring(idx + 1); id = id.Replace(".aspx",""); //Only needed when testing without the 404-approach return id; } 在我的主页上的Page_Load中,我在form-tag的action-attribute中设置了正确的URL. protected void Page_Load(object sender,EventArgs e) { string virtualURL = (string)HttpContext.Current.Items["VirtualUrl"]; if (!String.IsNullOrEmpty(virtualURL)) { form1.Action = virtualURL; } } 重写工作正常,但是当我在页面上执行回发时,不会执行回发,这可以以某种方式解决吗? 问题似乎与404方法有关,因为当我尝试没有它(并且失去无扩展功能)时,回发工作.那是我要求的时候: 这可以解决,还是有任何其他解决方案满足我的要求(IIS6,没有serveraccess / ISAPI过滤器和无扩展). 解决方法form1.Action = Request.RawUrl 与…结合 HttpContext.Current.RewritePath("/Default.aspx",true); 对我来说效果很好. 设置表单Action属性是我缺少的那个… 谢谢你的解决方案! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 如何集成ASP .Net Model View Presenter(MVP)模
- asp.net – 如何从ReSharper中删除“使用目录”消息
- ASP.NET Web.config中的相对路径
- 如何在ASP.NET应用程序中查询Word docx?
- asp.net-mvc – 自定义授权MVC 3和Ninject IoC
- 这些ASP.NET Core依赖性警告的来源是什么?
- asp.net-mvc – 在html5输入模式属性中使用“@”和MVC
- 你如何在ASP.NET中配置httpOnlyCookies?
- asp.net – 无法加载文件或程序集
- asp.net-mvc – ASP.Net MVC路由策略
推荐文章
站长推荐
- asp.net – 使用Python Mechanize进行屏幕分析as
- asp.net – 在为app_offline.htm提供特定URL时,将
- 详细介绍有关于.NET的委托
- asp.net – 如何检查文档是否准备好?
- asp.net – 没有Javascript的Google Analytics
- Asp.Net MiddleWare与HttpModules
- asp.net-mvc – 如何包括一个模型与RedirectToAc
- asp.net-mvc-3 – 在MVC3中的WebGrid列中应用特定
- 增加堆栈大小IIS ASP.NET 3.5
- asp.net-mvc – RouteCollection和路由表之间有什
热点阅读