最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中實(shí)現(xiàn)偽靜態(tài)頁(yè)面兩種方式介紹

 更新時(shí)間:2013年01月27日 16:08:03   作者:  
偽靜態(tài)技術(shù)的誕生,帶動(dòng)了于搜索引擎友好C#中實(shí)現(xiàn)偽靜態(tài)頁(yè)面有兩種方式,本文將一一詳解,感興趣的朋友可以參考下,希望本文對(duì)你學(xué)習(xí)偽靜態(tài)有所幫助
第一種是在頁(yè)面global.asax中,相關(guān)代碼如下
復(fù)制代碼 代碼如下:

void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext context = ((HttpApplication)sender).Context;
string oldurl = context.Request.Path.ToLower();
if ( ( oldurl.IndexOf("-") > 0 && oldurl.IndexOf(".") == -1) || (oldurl.IndexOf("-") > 0 && oldurl.IndexOf("aspx") > 0) )
{
string[] url = oldurl.Substring(oldurl.LastIndexOf("/") + 1).Replace(".aspx", "").Split('-');
string path = oldurl.Substring(0, oldurl.LastIndexOf("/") + 1);
//file
string file = url[0];
file = file.Replace("about", "detail");
file = file.Replace("news", "list");
file = file.Replace("down", "detail");
file = file.Replace("case", "album");
file = file.Replace("contact", "detail");
//query
string query = "";
for ( int i=1;i<url.Length;i++ )
{
if (url[i] != "")
{
switch (i)
{
case 1:
query += "id=" + url[i];
break;
case 2:
query += "&page=" + url[i];
break;
case 3:
query += "&key=" + url[i];
break;
case 4:
query += "&v1=" + url[i];
break;
case 5:
query += "&v2=" + url[i];
break;
case 6:
query += "&v3=" + url[i];
break;
case 7:
query += "&v4=" + url[i];
break;
case 8:
query += "&v5=" + url[i];
break;
case 9:
query += "&v6=" + url[i];
break;
case 10:
query += "&v7=" + url[i];
break;
}
}
}
//newurl
string newurl = path + file + ".aspx?" + query;
if( context.Request.ServerVariables["QUERY_STRING"] != null && context.Request.ServerVariables["QUERY_STRING"] != "" )
newurl += "&" + context.Request.ServerVariables["QUERY_STRING"];
//Response.Write(newurl);
context.RewritePath(newurl);
}

第二種方法是在HttpModule.cs中,代碼如下
復(fù)制代碼 代碼如下:

public class HttpModule : IHttpModule
{
private const RegexOptions regexOptions = RegexOptions.IgnoreCase | RegexOptions.Compiled;
private static readonly Regex regexFileName = new Regex(@".*?/([^./]*)\.aspx(.*)", regexOptions);
private static readonly Regex regexRewritePath = new Regex(@"^.*?/(\w*)(-?(\w+)-([\w,\|,%]+))+\.aspx", regexOptions);
public void Dispose()
{
}
public void Init(HttpApplication httpApplication)
{
httpApplication.BeginRequest += ReUrl_BeginRequest;
}
private static void ReUrl_BeginRequest(object sender, EventArgs e)
{
Globals.Catch(
() =>
{
var context = ((HttpApplication)sender).Context;
var request = context.Request;
var url = request.Url;
if (!VerifyUrl(url))
{
string input = url.PathAndQuery.ToLower();
//Loger.Debug("PathAndQuery-->" + input);
//Loger.Debug("AbsolutePath-->" + url.AbsolutePath);
//Loger.Debug("AbsoluteUri-->" + url.AbsoluteUri);
//Loger.Debug("DnsSafeHost-->" + url.DnsSafeHost);
//Loger.Debug("LocalPath-->" + url.LocalPath);
//Loger.Debug("AppDomain.CurrentDomain.BaseDirectory-->" + AppDomain.CurrentDomain.BaseDirectory);
//Loger.Debug("Globals.GlobalsVirtualFilePath-->" + Globals.GlobalsVirtualFilePath);
if (input.StartsWith(Globals.GlobalsVirtualFilePath))
input = input.Remove(0, Globals.GlobalsVirtualFilePath.Length);
string viewmode = Globals.ViewMode;
var themeName = request.QueryString["theme"] ?? "";
if (string.IsNullOrEmpty(themeName))
{
themeName = Globals.ThemeName;
}
if (input == "/")
input = "/index.aspx";
if (viewmode == "Rewrite")
{
Loger.Debug("now input-->" + input);
Match match = regexRewritePath.Match(input);
if (match.Success && match.Groups.Count == 5)
{
var captures3 = match.Groups[3].Captures;
var captures4 = match.Groups[4].Captures;
var itemCount = match.Groups[3].Captures.Count;
var list = new List<string>();
for (var i = 0; i < itemCount; i++)
{
list.Add(string.Concat(captures3[i].Value, "=", captures4[i].Value));
}
context.RewritePath(Globals.AspxFileUrl(themeName, match.Groups[1].Value + ".aspx?" + string.Join("&", list.ToArray())));
return;
}
}
var fileName = regexFileName.Match(request.Path.ToLower()).Groups[1].ToString();
if (string.IsNullOrEmpty(fileName))
return;
new ConvertTheme(context)
{
ThemeName = themeName,
ViewMode = viewmode
}.Display(fileName);
}
});
}
private static bool VerifyUrl(Uri uri)
{
var url = uri.AbsolutePath.ToLower();
if (url.StartsWith(Globals.GlobalsVirtualFilePath))
url = url.Remove(0, Globals.GlobalsVirtualFilePath.Length);
return uri.IsFile
|| url.IndexOf("site") != -1
|| url.IndexOf("sys") != -1
|| url.IndexOf("html") != -1
|| url.IndexOf("user") != -1
|| url.IndexOf("bbs") != -1
|| url.IndexOf("_module.aspx") != -1
|| url.IndexOf("webresource.axd") != -1
|| url.IndexOf("scriptresource.axd") != -1;
}
}

相關(guān)文章

  • .NET Core 3.0中WPF使用IOC的圖文教程

    .NET Core 3.0中WPF使用IOC的圖文教程

    這篇文章主要給大家介紹了關(guān)于在.NET Core 3.0中WPF使用IOC的圖文教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • MVVM模式下WPF動(dòng)態(tài)綁定展示圖片

    MVVM模式下WPF動(dòng)態(tài)綁定展示圖片

    這篇文章主要為大家詳細(xì)介紹了MVVM模式下WPF動(dòng)態(tài)綁定展示圖片的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 利用asp.net實(shí)現(xiàn)生成不重復(fù)訂單號(hào)

    利用asp.net實(shí)現(xiàn)生成不重復(fù)訂單號(hào)

    訂單號(hào)在購(gòu)物過程中起到了很好的識(shí)別作用,更方便的有利于工作人員識(shí)別商品,本文介紹利用asp.net實(shí)現(xiàn)生成訂單號(hào)
    2012-12-12
  • 詳解ASP.NET中加密和解密的方法

    詳解ASP.NET中加密和解密的方法

    本文詳細(xì)講解了ASP.NET中加密和解密的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • 淺談asp.net Forms身份驗(yàn)證詳解

    淺談asp.net Forms身份驗(yàn)證詳解

    這篇文章主要介紹了淺談asp.net Forms身份驗(yàn)證詳解 ,這種方法可以輕松的保持用戶的登錄狀態(tài)(如果用戶想這樣),便捷的用戶授權(quán)配置,增強(qiáng)的安全性,有興趣的可以了解一下。
    2016-12-12
  • 用WebClient.UploadData方法上載文件數(shù)據(jù)的方法

    用WebClient.UploadData方法上載文件數(shù)據(jù)的方法

    用WebClient.UploadData方法上載文件數(shù)據(jù)的方法...
    2007-04-04
  • 在.NET?6.0中自定義接口路由的方法

    在.NET?6.0中自定義接口路由的方法

    這篇文章主要介紹了在.NET?6.0中自定義接口路由,在本文,我們學(xué)習(xí)了如何使用終止中間件組件作為接口,并用將該接口映射到新的路由引擎,從而讓我們的路由變得更加強(qiáng)大和靈活,需要的朋友可以參考下
    2023-04-04
  • 使用FreeHost SQL2000網(wǎng)頁(yè)管理器出錯(cuò)解決辦法

    使用FreeHost SQL2000網(wǎng)頁(yè)管理器出錯(cuò)解決辦法

    在您登陸FreeHost SQL2000網(wǎng)頁(yè)管理器時(shí),如果提示以下信息: 發(fā)生類型為 System.Web.HttpUnhandledException 的異常
    2012-01-01
  • c# .net 生成圖片驗(yàn)證碼的代碼

    c# .net 生成圖片驗(yàn)證碼的代碼

    c# .net 生成圖片驗(yàn)證碼的代碼...
    2007-03-03
  • .Net中關(guān)于stirng轉(zhuǎn)System.Type的一種實(shí)現(xiàn)思路詳解

    .Net中關(guān)于stirng轉(zhuǎn)System.Type的一種實(shí)現(xiàn)思路詳解

    這篇文章主要給大家介紹了.Net中關(guān)于stirng轉(zhuǎn)System.Type的一種實(shí)現(xiàn)思路的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05

最新評(píng)論

阜南县| 磐安县| 安义县| 彩票| 西丰县| 滕州市| 明星| 云龙县| 汶上县| 富蕴县| 旅游| 汉阴县| 黄山市| 金川县| 会宁县| 长治市| 固原市| 图片| 望奎县| 大竹县| 简阳市| 辽阳市| 区。| 偏关县| 泗阳县| 海盐县| 冷水江市| 乡城县| 遂溪县| 翁牛特旗| 建始县| 右玉县| 金寨县| 涞源县| 翁牛特旗| 许昌市| 天津市| 辉县市| 山阳县| 铜川市| 南澳县|