这是httpHandlers程序如何:
using System;
using System.Web;
using System.Collections.Generic;
using System.Text;
using System.Web.SessionState;namespace ClassLibrary1
{
    public class Class1 : IHttpHandler, IRequiresSessionState
    {
        public bool IsReusable
        {
            get { return false; }
        }
        public void ProcessRequest(HttpContext context)
        {
            context.Server.Execute("/login.html");
        }
    }
}
我在web.config里设置如下:
<httpHandlers>
      <add verb="*" path="*.html" type="ClassLibrary1.Class1"></add>
    </httpHandlers>
只要这里的path="*"或是*.html就会出错,执行子请求时出错,总之只要这里的扩展名等于我要重写的地址的扩展名就出这个“执行子请求时出错”错识,其它的都正常。我只要是想给html页面地址重新定向一下,其它的页面不处理的。
那位大哥试试,看看是什么问题,小弟查这个错误用了两天时间了还没有查出来。

解决方案 »

  1.   

    要对html文件重定向不应该用context.Server.Execute("/login.html"),这个方法将执行login.html这个页面一次,并将最终的html输出在页面的头部。
    重定向页面,应该使用context.Response.Redirect()或者context.Server.Transfer()
      

  2.   

    path不能直接写成path="*",一定要虚拟的加一层user/或者其他名字,因为处理参数的页面不能和要虚拟的路径在同一层目录下,否则会循环调用。
      

  3.   

    path我等于*.html,也是一样,无只要处理html的页面,其它的页面不用重写。在代码里面用context.Server.Transfer()这个也是一样的错误,我都用过了。只要path的内容与我要得写的地址的扩展名不一样就不会出错。比如我要设置path="*.html",在代码里我重写的地址是index.aspx(重写用context.Server.Transfer(),context.server.execute()这两个都可以)这样就可以,不会出错。只要扩展名一样就出那个错误。服了。