没有合适的资源?快使用搜索试试~ 我知道了~
首页自定义URL重写解决ASP.NET参数问题与相对路径支持
本文主要探讨了在ASP.NET应用程序中实现URL重写的方法,以克服现有技术的一些局限性,尤其是对于相对路径支持不足和参数管理的不便。作者首先指出,尽管URL重写已经成为网站优化的常见手段,但许多现有的解决方案并不完美,比如它们不支持相对路径,且微软的URL重写机制依赖正则表达式,这在某些情况下可能造成定位参数困难。 文章提出的关键问题包括: 1. 支持相对路径:由于许多URL重写工具不支持相对路径,如果要在已有项目中加入这样的功能,开发者会面临额外的工作量。 2. 参数管理:如何明确指定某个页面可以接受的参数数量以及哪些参数是可选的,这在使用正则表达式的URL重写中并不直观。 为了解决这些问题,作者提出了使用自定义HttpModule,即`MyHttpModule`,来实现更为灵活和可控的URL重写。这个模块的主要作用是在`AuthorizeRequest`事件中处理URL的重写逻辑,将URL中的扩展名去掉,以达到简化URL并可能隐藏动态内容的目的。 代码示例展示了如何在`MyHttpModule`中编写基础的重写处理方法,但需要注意的是,这个示例并不包含性能优化,且重写规则是硬编码的,即只针对特定的URL模式。为了实现更复杂的重写规则,可能需要引入更高级的技术,如基于配置或路由映射的方式。 本文通过创建自定义HttpModule,为ASP.NET项目提供了改进的URL重写策略,帮助开发者更好地管理页面路径和参数,并确保静态资源如图片和JS文件能够正确处理。这是一个实用的技巧,尤其适用于需要进行URL优化且对现有工具不满意的情况。
资源详情
资源推荐
URL重写及干掉重写及干掉ASP.NET试图状态的实现方法试图状态的实现方法
1、URL重写已经很普遍了,但基本上大部分的URL重写都不支持页面的相对路径,所有如果想在已经开发好的项目中添加还
是有压力的,第二就是例如微软的那个URL重写是根据正则表达式来处理的,那样是很好,但也有不足之处,就是不方便定位
到某个页面只能有哪些参数。
我觉得要解决的问题有一下几个:
1、解决如图片js等不能使用相对路径的文件
2、解决某个页面能有几个参数和哪些参数是可选的
下面就是解决掉这些问题了
添加处理程序MyHttpModule,下面是我的一个简单的处理程序(我只是做了一个简单的,并没有考虑性能,而且我是写死
的一个url重写就是重写成没有扩展名的)
代码如下:
using System;
using System.Collections.Generic;
using System.Web;
using System.IO;
using System.Text;
namespace MyClass
{
public class MyHttpModule : IHttpModule
{
#region IHttpModule 成员
///<summary>
/// 释放所有资源
///</summary>
public void Dispose()
{
}
///<summary>
/// 初始化模块,并使其为处理请求做好准备
///</summary>
///<param name=”context”> 一个 System.Web.HttpApplication,它提供对 ASP.NET 应用程序内所有应用程序对象的公用的
方法、属性和事件的访问</param>
public void Init(HttpApplication context)
{
context.AuthorizeRequest += new
EventHandler(this.BaseModuleRewriter_AuthorizeRequest);
}
///<summary>
/// 当安全模块已验证用户授权时发生
///</summary>
///<param name=”sender”></param>
///<param name=”e”></param>
protected virtual void BaseModuleRewriter_AuthorizeRequest(
object sender, EventArgs e)
{
System.Web.HttpApplication app = (System.Web.HttpApplication)sender;
Rewrite(app.Request.Path, app);
}
///<summary>
/// 重写url
///</summary>
///<param name=”requestedPath”>url的虚拟路径</param>
///<param name=”app”></param>
protected void Rewrite(string requestedPath, System.Web.HttpApplication app)
{
List<string> qeryString;
string virtualPath;
string inputFile = GetInputFile(app.Context, out virtualPath, out qeryString);//获取到真实的文件信息
if (System.IO.Path.GetExtension(inputFile) == “.aspx”)//如果是aspx文件 那么则把保留重写的url
{
app.Context.RewritePath(requestedPath, string.Empty, string.Empty);//这里查询参数我没去处理了,也就是
Request.QueryString的信息,如果取qeryString 然后去处理成一个字符串
return;
}
app.Context.RewritePath(virtualPath, string.Empty, app.Context.Request.QueryString.ToString());//其它文件则使用找到的路
径
下载后可阅读完整内容,剩余4页未读,立即下载
weixin_38732519
- 粉丝: 2
- 资源: 951
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 十种常见电感线圈电感量计算公式详解
- 军用车辆:CAN总线的集成与优势
- CAN总线在汽车智能换档系统中的作用与实现
- CAN总线数据超载问题及解决策略
- 汽车车身系统CAN总线设计与应用
- SAP企业需求深度剖析:财务会计与供应链的关键流程与改进策略
- CAN总线在发动机电控系统中的通信设计实践
- Spring与iBATIS整合:快速开发与比较分析
- CAN总线驱动的整车管理系统硬件设计详解
- CAN总线通讯智能节点设计与实现
- DSP实现电动汽车CAN总线通讯技术
- CAN协议网关设计:自动位速率检测与互连
- Xcode免证书调试iPad程序开发指南
- 分布式数据库查询优化算法探讨
- Win7安装VC++6.0完全指南:解决兼容性与Office冲突
- MFC实现学生信息管理系统:登录与数据库操作
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功