WebHttpHandler.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using System;
  2. using System.Web;
  3. namespace SiteCore
  4. {
  5. public class WebHttpHandler : IHttpHandlerFactory
  6. {
  7. #region IHttpHandlerFactory 成员
  8. public IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated)
  9. {
  10. int len = url.LastIndexOf("/");
  11. string fname = url.Substring(len + 1);
  12. string cname = fname.Substring(0, fname.LastIndexOf("."));
  13. /*
  14. string fname = url.Substring(url.IndexOf('/') + 1);
  15. while (fname.IndexOf('/') != -1)
  16. fname = fname.Substring(fname.IndexOf('/') + 1);
  17. string cname = fname.Substring(0, fname.IndexOf('.'));
  18. */
  19. string className = "SiteCore.Handler." + cname;
  20. object h = null;
  21. try
  22. {
  23. // 采用动态反射机制创建相应的IHttpHandler实现类。
  24. h = Activator.CreateInstance(Type.GetType(className));
  25. }
  26. catch (Exception e)
  27. {
  28. throw new HttpException("工厂不能为类型" + cname + "创建实例。", e);
  29. }
  30. return (IHttpHandler)h;
  31. }
  32. public void ReleaseHandler(IHttpHandler handler)
  33. {
  34. }
  35. #endregion
  36. }
  37. }