你的button的点击事件注册了吗?
我在自己机器上调试都是好用的

解决方案 »

  1.   

    http://support.microsoft.com/default.aspx?scid=KB;EN-US;312629
      

  2.   

    Server.Transfer(url)中的url必须是.aspx页面。html页面只能用redirect
      

  3.   

    同楼上, 看下SDK
    ms-help://MS.NETFrameworkSDKv1.1/cpref/html/frlrfsystemwebhttpserverutilityclasstransfertopic2.htm
      

  4.   

    改用Server.Execute看看,或者try-catch一下异常
      

  5.   

    Response.Redirect("index.html");// .html
    Server.Transfer("receivemail.aspx");// .aspx
      

  6.   

    刚才我说的有错误,我没注意看楼主的代码,我是用ASPX页来试的
    刚才也查了一些资料,我认为是这样的,也不知道对不对我们先看一下Server.Transfer(url,bool)的属性和功能
        Server.Transfer方法把执行流程从当前的ASPX文件转到同一服务器上的另一个ASPX页面。调用Server.Transfer时,当前的ASPX页面终止执行,执行流程转入另一个ASPX页面,但新的ASPX页面仍使用前一ASPX页面创建的应答流。   
      如果用Server.Transfer方法实现页面之间的导航,浏览器中的URL不会改变,因为重定向完全在服务器端进行,浏览器根本不知道服务器已经执行了一次页面变换。   
      默认情况下,Server.Transfer方法不会把表单数据或查询字符串从一个页面传递到另一个页面,但只要把该方法的第二个参数设置成True,就可以保留第一个页面的表单数据和查询字符串。   
      同时,使用Server.Transfer时应注意一点:目标页面将使用原始页面创建的应答流,这导致ASP.NET的机器验证检查(Machine Authentication Check,MAC)认为新页面的ViewState已被篡改。因此,如果要保留原始页面的表单数据和查询字符串集合,必须把目标页面Page指令的EnableViewStateMac属性设置成False。
    我的看法如下:
        因为Page_Load是页面的初始化事件,把Server.Transfer放在该事件中执行,也就是说还没有对a.aspx页进行初始化就直接转到了index.html根本就没有与服务器端有任何联系,也就是说该页面上的任何服务器控件都没有进行初始化就转向了HTML客户端,在转向过程中服务器端未接到任何请求,所以是可以转向的。
        而放在别的位置,由于页面初始化已经完毕,服务器端已经接到来自客户端的请求,而且该页面已经运行在服务器端,这时不管在什么位置调用Server.Transfer都会使a.aspx转向另外一页,这时问题就出来了,也就是说index.html是运行在客户端的,而Server.Transfer转向则是服务器端向服务器端的转向。(注意看一下上面对于Server.Transfer的说明有这么一条:因为重定向完全在服务器端进行)。这时就会报错。
        不知道说的对不对,只是一个想法
      

  7.   

    to samwcm(ROAM):你在那里看到这种说法的,最初我做的事index.htm文件,一样的无法到达to wangdequan1024(紫夜) :button事件肯定执行了,我单步执行察看,没有不执行的语句,而且我在另外一个项目的button下也是用Server.Transfer来转跳页面,没有问题的。还有我现在的项目里有两个页面,error.htm和log_error.htm文件,其中转跳error.htm部分可行,转跳到log_error.htm页面的全部不行
      

  8.   

    to to wangdequan1024(紫夜) :Server.Transfer如果带有false参数的话,当前页面的对答流(所有页面数据)将全部丢失,这样在服务器端进行的页面转移就与当前页面的初始化与否无关了退一步说,即便如你所想,为什么其他的页面就可以转至呢,receivemail.aspx是可以用Server.Transfer的,在button事件下。
      

  9.   

    你是不是有try 和Catch语句?
    把Server.Transfer("index.html",false);放到按钮事件得最后不要放在Catch 前面,放到后面试试
      

  10.   

    仔细去查找下msdn:
    ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemWebHttpServerUtilityClassTransferTopic2.htmindex.htm也不行,传输到的页也应该是 .aspx 页。例如,传输到 .asp 或 .asmx 页是无效的。Transfer 调用 End,它在完成时引发 ThreadAbortException 异常。
      

  11.   

    to hell9999(没有美女陪伴得日子):我有try语句,但不在同一函数里,我单独给写了个函数有必要说明一下,我发现error.htm是在项目里建立的文件,可以使用
    log_error.htm是添加现有项目的,是不是这样会导致异常呢??
      

  12.   

    to wangdequan1024(紫夜) :button事件肯定执行了,我单步执行察看,没有不执行的语句,而且我在另外一个项目的button下也是用Server.Transfer来转跳页面,没有问题的。还有我现在的项目里有两个页面,error.htm和log_error.htm文件,其中转跳error.htm部分可行,转跳到log_error.htm页面的全部不行
    ---------------------------------------------------------------
    error.htm和log_error.htm这两页的跳转,你是怎么实现跳转的,有代码吗?.aspx的页面因为是在服务器端执行的,所有不管放在什么位置都是可以实现跳转的。
      

  13.   

    另外:
    “我发现error.htm是在项目里建立的文件,可以使用log_error.htm是添加现有项目的”
    这句话是什么意思?
      

  14.   

    就是error.htm是通过新建建立的,log_error.htm是从外部现有的文件添加的
    代码如下:
    try
    {
    ...
    //成功则
    server.transfer("index.html");
    }
    cacth
    {
    server.transfer("error.htm");
    }----------------------------------------------------if(Session["username"]==null)
    server.transfer("log_error.htm");//没有权限使用这个页面我在很多页面都用了写代码,其中server.transfer("error.htm")在有些页面可以
    server.transfer("index.html")则肯定不行,改成response.redirect("index.htm")就ok了
      

  15.   

    你把index.html 改改名字试试。
      

  16.   

    原来就是index.htm有问题才改名为index.html的,这个应该是没有问题的
    只有有文件,哪怕是没有后缀名,只有地址对了,ie也会正确的现实出来
      

  17.   

    如果不麻烦的话,你可以试试把这三个HTML页都改成aspx页,应该不会出错的,内容不需要改,直接把后缀名改了就行。试试看有没有变化
      

  18.   

    Server.Transfer只能够转跳到本地虚拟目录指定的页面
      

  19.   

    多谢各位的热心帮助我把index.htm后缀名改成aspx就可以了,但本着探讨技术的原则,我又把后缀名改成txt却不行了,还是“执行子请求时出错”。为什么一定要aspx后缀名才行呢,为什么有些地方又可以用htm后缀名呢?据我所知,Server.Transfer在2年前aspx后缀名没有出现的时候就已经存在(当时我学过2星期的asp动态网页),希望大家探讨,发现其中规律,何时要用aspx文件,何时要用htm文件?
      

  20.   

    我认为只要是运行在服务器端的,不管是.ASP还是.ASPX都可以用,两年前也是用在.ASP的上面~
      

  21.   

    wangdequan1024(紫夜)的意思是,只要是在服务器端运行的页面都行?可是很早之前我都是用这个语句,大多数是转向htm页面。我认为关键是还没有搞清楚服务器是如何进行转换的,Server.Transfer语句执行的机制(最基本的过程)是怎样的?
      

  22.   

    将server.transfer改为Response.redirect
      

  23.   

    Server.Transfer方法把执行流程从当前的ASPX文件转到同一服务器上的另一个ASPX页面。调用Server.Transfer时,当前的ASPX页面终止执行,执行流程转入另一个ASPX页面,但新的ASPX页面仍使用前一ASPX页面创建的应答流。   
      如果用Server.Transfer方法实现页面之间的导航,浏览器中的URL不会改变,因为重定向完全在服务器端进行,浏览器根本不知道服务器已经执行了一次页面变换。   
      默认情况下,Server.Transfer方法不会把表单数据或查询字符串从一个页面传递到另一个页面,但只要把该方法的第二个参数设置成True,就可以保留第一个页面的表单数据和查询字符串。   
      同时,使用Server.Transfer时应注意一点:目标页面将使用原始页面创建的应答流,这导致ASP.NET的机器验证检查(Machine Authentication Check,MAC)认为新页面的ViewState已被篡改。因此,如果要保留原始页面的表单数据和查询字符串集合,必须把目标页面Page指令的EnableViewStateMac属性设置成False。