⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rewriterfactoryhandler.cs

📁 1、用SQL查询器打开install目录下的dooogo.sql运行之后创建数据库dooogo。 2、然后打开web.config修改 <DbProvider type="Club.Fram
💻 CS
字号:
using System;
using System.IO;
using System.Web.UI;
using System.Web;
using Club.Common.URLRewriter.Config;
using System.Text.RegularExpressions;

namespace Club.Common.URLRewriter
{
	/// <summary>
	/// Provides an HttpHandler that performs redirection.
	/// </summary>
	/// <remarks>The RewriterFactoryHandler checks the rewriting rules, rewrites the path if needed, and then
	/// delegates the responsibility of processing the ASP.NET page to the <b>PageParser</b> class (the same one
	/// used by the <b>PageHandlerFactory</b> class).</remarks>
	public class RewriterFactoryHandler : IHttpHandlerFactory
	{
		/// <summary>
		/// GetHandler is executed by the ASP.NET pipeline after the associated HttpModules have run.  The job of
		/// GetHandler is to return an instance of an HttpHandler that can process the page.
		/// </summary>
		/// <param name="context">The HttpContext for this request.</param>
		/// <param name="requestType">The HTTP data transfer method (<b>GET</b> or <b>POST</b>)</param>
		/// <param name="url">The RawUrl of the requested resource.</param>
		/// <param name="pathTranslated">The physical path to the requested resource.</param>
		/// <returns>An instance that implements IHttpHandler; specifically, an HttpHandler instance returned
		/// by the <b>PageParser</b> class, which is the same class that the default ASP.NET PageHandlerFactory delegates
		/// to.</returns>
		public virtual IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated)
		{
			// log info to the Trace object...
			context.Trace.Write("RewriterFactoryHandler", "Entering RewriterFactoryHandler");

			string sendToUrl = url;
			string filePath = pathTranslated;

			// get the configuration rules
			RewriterRuleCollection rules = RewriterConfiguration.GetConfig().Rules;

			// iterate through the rules
			for(int i = 0; i < rules.Count; i++)
			{
				// Get the pattern to look for (and resolve its URL)
				string lookFor = "^" + RewriterUtils.ResolveUrl(context.Request.ApplicationPath, rules[i].LookFor) + "$"; 

				// Create a regular expression object that ignores case...
				Regex re = new Regex(lookFor, RegexOptions.IgnoreCase);

				// Check to see if we've found a match
				if (re.IsMatch(url))
				{
					// do any replacement needed
					sendToUrl = RewriterUtils.ResolveUrl(context.Request.ApplicationPath, re.Replace(url, rules[i].SendTo));
					
					// log info to the Trace object...
					context.Trace.Write("RewriterFactoryHandler", "Found match, rewriting to " + sendToUrl);

					// Rewrite the path, getting the querystring-less url and the physical file path
					string sendToUrlLessQString;
					RewriterUtils.RewriteUrl(context, sendToUrl, out sendToUrlLessQString, out filePath);

					// return a compiled version of the page
					context.Trace.Write("RewriterFactoryHandler", "Exiting RewriterFactoryHandler");	// log info to the Trace object...
					return PageParser.GetCompiledPageInstance(sendToUrlLessQString, filePath, context);
				}
			}


			// if we reached this point, we didn't find a rewrite match
			context.Trace.Write("RewriterFactoryHandler", "Exiting RewriterFactoryHandler");	// log info to the Trace object...
			return PageParser.GetCompiledPageInstance(url, filePath, context);
		}

		public virtual void ReleaseHandler(IHttpHandler handler)
		{
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -