我在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; }
}
答案 0 :(得分:0)
原来,网站的ISAPI / CGI设置阻止了4.0 - 一旦启用,网站就可以运行