HttpHandler在IIS中的部署问题(扩展名映射)
2009-06-18 08:42 Kevin-wang 阅读(419) 评论(0) 编辑 收藏 举报1.实现IHttpHandler接口
1 public class ReportViewHandler : System.Web.IHttpHandler, System.Web.SessionState.IRequiresSessionState
2 {
3 #region IHttpHandler 成员
4
5 public bool IsReusable
6 {
7 get { return false; }
8 }
9
10 public static string Msg
11 {
12 get { return System.Web.HttpContext.Current.Session["mylib.system.web.MyHandler.msg"] as string; }
13 set { System.Web.HttpContext.Current.Session["mylib.system.web.MyHandler.msg"] = value; }
14 }
15
16 public static string ContentType//content_type
17 {
18 get { return System.Web.HttpContext.Current.Session["mylib.system.web.MyHandler.content_type"] as string; }
19 set { System.Web.HttpContext.Current.Session["mylib.system.web.MyHandler.content_type"] = value; }
20 }
21
22 public static byte[] Content//content
23 {
24 get { return System.Web.HttpContext.Current.Session["mylib.system.web.MyHandler.content"] as byte[]; }
25 set { System.Web.HttpContext.Current.Session["mylib.system.web.MyHandler.content"] = value; }
26 }
27
28 public void ProcessRequest(System.Web.HttpContext p_Context)
29 {
30 p_Context.Response.ContentType = ContentType;
31 p_Context.Response.OutputStream.Write(Content, 0, Content.Length);
32
33 Content = null; // 释放内存
34 }
35 #endregion
36 }
2 {
3 #region IHttpHandler 成员
4
5 public bool IsReusable
6 {
7 get { return false; }
8 }
9
10 public static string Msg
11 {
12 get { return System.Web.HttpContext.Current.Session["mylib.system.web.MyHandler.msg"] as string; }
13 set { System.Web.HttpContext.Current.Session["mylib.system.web.MyHandler.msg"] = value; }
14 }
15
16 public static string ContentType//content_type
17 {
18 get { return System.Web.HttpContext.Current.Session["mylib.system.web.MyHandler.content_type"] as string; }
19 set { System.Web.HttpContext.Current.Session["mylib.system.web.MyHandler.content_type"] = value; }
20 }
21
22 public static byte[] Content//content
23 {
24 get { return System.Web.HttpContext.Current.Session["mylib.system.web.MyHandler.content"] as byte[]; }
25 set { System.Web.HttpContext.Current.Session["mylib.system.web.MyHandler.content"] = value; }
26 }
27
28 public void ProcessRequest(System.Web.HttpContext p_Context)
29 {
30 p_Context.Response.ContentType = ContentType;
31 p_Context.Response.OutputStream.Write(Content, 0, Content.Length);
32
33 Content = null; // 释放内存
34 }
35 #endregion
36 }
2.在Web.config里配置
在Web.config配置文件中的httpHandlers节 添加
<add path="ReportView.dsrv" verb="*" type="Report.ReportViewHandler,ReportLib.Web" validate="false" />
3.在IIS里添加映射
操作方法:IIS站点属性 ->主目录 -> 配置
点击“插入”按钮,选择或输入C:\WINDOWS\Microsoft.NET\Framework\v2.*****\aspnet_isapi.dll
取消"确认文件是否存在"前的钩. 最后点击”确定“。
最终演示效果: