近期有Jexus用户反映,在Linux ASP.NET MVC网站的Web.config中添加 httpHandlers 配置用于处理自定义类型,但是在运行中并没有产生预期的效果,服务器返回了404(找不到网页)错误。经我亲自测试,在WebForm网站中,httpHandlers节点的配置是有效的,而在MVC中的确无效。
造成httpHandlers无效的原因我并没有时间去深究,为了能及时解决这个问题,我把注意力放到了Global.asax文件的Application_BeginRequest方法,并给出如下的解决方案:
一,在global.asax中添加一个静态方法:
static bool TryHanler<T>(string ext) where T : IHttpHandler
{
if (string.IsNullOrEmpty(ext)) return false;
var context = HttpContext.Current;
var path = context.Request.AppRelativeCurrentExecutionFilePath;
if (!path.EndsWith(ext)) return false;
var handle = Activator.CreateInstance(typeof(T)) as IHttpHandler;
if (handle == null) return false;
handle.ProcessRequest(context);
context.Response.End();
return true;
}
说明:这是一个泛型方法,T表示你用于处理某个路径的继承自IHttpHandler的处理类,该方法的参数是这个处理类对应的路径的扩展名(含“.”号)。
二,在global.asax中添加Application_BeginRequest方法,并在该方法中调用TryHandler。如:
protected void Application_BeginRequest(object sender, EventArgs e)
{
if(TryHandler<myHandler>(".do")) return;
}

http://www.linuxdot.net/bbsfile-4310

最新文章

  1. runtime运行时
  2. 一个有趣的SQL Server 层级汇总数据问题
  3. sql server 2005导出数据到oracle
  4. 匹配 prev 元素之后的所有 siblings 元素
  5. 浏览器Firefox新标签页默认打开地址设置
  6. php判断是否为手机客户端
  7. Android开源项目 Universal imageloader 源码研究之Lru算法
  8. jQuery常用效果
  9. SRM 582 Div II Level One: SemiPerfectSquare
  10. OData.NET已在 GitHub上开源
  11. Using YARN with Cgroups testing in sparkml cluster
  12. js 两个日期比较相差多少天
  13. 爬虫概念 requests模块
  14. JFinal Web开发学习(八)后台集成H-ui-admin前端框架
  15. linux安装使用7zip
  16. Solidity字符串和函数
  17. Spark 实践——用决策树算法预测森林植被
  18. pytorch之LSTM
  19. linphone
  20. Node.js进程管理之进程集群

热门文章

  1. java int与integer的区别
  2. 对 Visual Studio 中的Resharper禁用对某种文件的检测
  3. windows下安装并配置mysql
  4. 一道算法题目, 二行代码, Binary Tree
  5. 修改VMware虚拟机里面的显卡名称
  6. NOIP2009Hankson 的趣味题[唯一分解定理|暴力]
  7. 如何用Maven创建web项目
  8. 杂项之pymysql连接池
  9. 用于部署war并重启Tomcat的脚本
  10. Computer assisted surgery