国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

URL重寫及干掉ASP.NET試圖狀態的實現方法

2024-07-10 12:41:39
字體:
來源:轉載
供稿:網友
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());//其它文件則使用找到的路徑
}
///<summary>
/// 獲取url對應的絕對路徑和虛擬路徑及查詢參數
///</summary>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南靖县| 长沙县| 璧山县| 牙克石市| 余庆县| 始兴县| 上虞市| 辛集市| 临汾市| 长垣县| 红原县| 施甸县| 天峻县| 商都县| 阿荣旗| 新绛县| 靖边县| 元朗区| 同仁县| 平阴县| 水富县| 浪卡子县| 大同县| 长乐市| 河池市| 莫力| 靖西县| 青冈县| 茂名市| 宿松县| 新田县| 黑河市| 呼伦贝尔市| 武山县| 祁连县| 茂名市| 肥乡县| 梁平县| 江西省| 庄河市| 宾阳县|