HttpHandler收到404和500错误

时间:2014-04-25 17:03:00

标签: c# asp.net httphandler

我在WindowsServer 2008 R2和IIS 6.1 sp1上运行网站

我创建了一个空的ASP.NET 4.0 Web应用程序,并为其添加了一个http处理程序。处理程序的工作是根据查询字符串中传递的tokenid(来自提供者上的联合单点登录)将传入调用重定向到其他站点。

为了测试连接,我只是将令牌解析为Dictionary并将信息写入context.Response。

处理程序在我的机器上运行,但是当我部署它时,我得到500和403错误。 当我创建应用程序池ASP.NET 4.0集成时出现500错误,在创建应用程序池ASP.NET 4.0 Classic时出现404错误

如果我将test.htm添加到目录中,我可以访问test.htm并查看其内容,但我希望看到处理程序的输出,所以它让我觉得它找不到处理程序。

这是web.config,后跟代码

   <configuration>
       <system.web>
          <compilation debug="true" targetFramework="4.0" />

          <httpHandlers>
             <add verb="*" path="*"
                type="RedirectSite.RedirectHttpHandler, RedirectSite, Version=1.0.0.0, Culture=neutral" />
          </httpHandlers>        
       </system.web>        
    <configuration>

        public class RedirectHttpHandler : IHttpHandler
            {

                public RedirectHttpHandler()
                { }

                public void ProcessRequest(HttpContext context)
                {

                    // check for tokenid in querystring
                    string tokenid = context.Request.Params["tokenid"];
                    string agentid = context.Request.Params["agentid"];

                    Dictionary<string,string> tokenItems = TokenParser.Parse(tokenid, agentid);

                    context.Response.Clear();

                    context.Response.Write("<b>Token Information</b><br/><br/>");

                    foreach (KeyValuePair<string, string> item  in tokenItems)
                    {
                        context.Response.Write(String.Format("{0} : {1}<br/>",item.Key,item.Value));
                    }

               }
                public bool IsReusable { get; private set; }
            }

1 个答案:

答案 0 :(得分:0)

原来,网站的ISAPI / CGI设置阻止了4.0 - 一旦启用,网站就可以运行