Tag: httphandlerfactory

使用HttpHandlerFactory呈现CMS和物理页面

我正在编写CMS系统,在阅读并完成一些示例后,我已经确定了HttpHandlerFactory以执行我需要的操作。 关键点是我们的网站通常是复制和注册流程的混合。 因此,我目前需要使用aspx的默认HttpHandler来呈现物理注册页面,直到我可以使用内容管理它们的方式。 在创建处理程序类之后,我将以下内容添加到我网站的Web配置中 由于上面的路径处理物理和cms驱动的页面,通过对代码的小检查,我能够看到页面是否物理存在,然后可以呈现所需的页面。 public IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated) { string pageName = Path.GetFileNameWithoutExtension(context.Request.PhysicalPath); context.Items.Add(“PageName”, pageName); //DirectoryInfo di = new DirectoryInfo(context.Request.MapPath(context.Request.ApplicationPath)); FileInfo fi = new FileInfo(context.Request.MapPath(context.Request.CurrentExecutionFilePath)); //var file = fi.Where(x => string.Equals(x.Name, string.Concat(pageName, “.aspx”), StringComparison.InvariantCultureIgnoreCase)).SingleOrDefault(); if (fi.Exists == false) { // think I had this the wrong way around, […]

asp.net 4.0中的页面路由(无扩展名url)与PageHandlerFactory(* .aspx)

请解释一下,这两种技术有何不同。 根据我在下面和本文中描述的经验,我假设在应用路由时,不会调用PageHandlerFactory。 我有自己的派生自PageHandlerFactory的类,只要用户访问页面就应该调用它。 当我不通过路由访问页面时,web.config中的这行代码一切都很好 但是当我通过路线访问页面时,例如 RouteTable.Routes.MapPageRoute(“Login”, “login”, “~/Pages/Login.aspx”); 处理程序未应用。 我甚至通过在我的处理程序的构造函数中放置一个断点来测试它,当我通过路径访问页面时它没有被调用。 由于我在我的项目中使用IoC / DI,我想继续使用它将DI注入我的aspx页面,即使我正在使用路由。 我将如何在web.config中管理它? 或者至少在代码中。 编辑:我发现每次加载页面都会引发事件,无论如何。 在Global.asax中它是 Application_PostRequestHandlerExecute 现在,我可以很容易地分辨出如何通过解析URL来调用它。 有没有办法,如何在某些页面上应用我的PageHandlerFactory?