我是VS 2005,IIS V5.1,
一个最简单的页面,一个ScriptManager,一个UpdatePanel,里面有一个Timer控件,一个label
然后timer控件的tick事件:    protected void Timer1_Tick(object sender, EventArgs e)
    {
        Label1.Text = DateTime.Now.ToString();
    } 直接在vs下运行一切正常,能正常显示每秒的时间。
但是我通过iis,然后预览,则就出现问题了。大部分时候会显示前面第一秒,然后就没反应了,隔了很久会跳出提示框" SYS.WebForms.PageRequestManagerTimeoutException:The server request timed out " , 然后我点确定后这时又有两种可能,1会继续间隔的刷新,但是很快又不刷新了;2,则还是老样子。 也有时候刚预览的时候能正常显示,可是过不久就又停止了。
但是,在VS下一切正常,是不是IIS的问题呀?大家有没有遇到过呀?

解决方案 »

  1.   

    我也不知道,帮你顶!!!看看web.config 是不是配置有问题???
      

  2.   

    谢谢,不过如果是web.config问题的话,那vs下是不是也应该出现那种问题呢。
      

  3.   

    用的windows 2000?在windows 2003下试过么
      

  4.   

    楼主可以先排除一下其他代码,只写timer的代码来运行一下,看能不能正常运行,我怀疑楼主是不在执行某些操作的时候陷入死循环,而引起超时。还是先检查一下吧。其他出现问题的几率很小,多数可能是因为代码书写错误了。
      

  5.   

    我已经是最少的代码了。test1.aspx代码如下:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test1.aspx.cs" Inherits="test1" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head id="Head1" runat="server">
        <title>登录</title>
    </head>
    <body >
       <form id="Form1" name="form1" runat=server>
              <asp:ScriptManager ID="ScriptManager1" runat="server">
           </asp:ScriptManager>
                   <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                    <ContentTemplate>
                        <asp:Timer ID="Timer1" runat="server" Interval="1000" OnTick="Timer1_Tick">
                        </asp:Timer>
                        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
                    </ContentTemplate>
                </asp:UpdatePanel>
        </form>
    </body>
    </html>
    test1.aspx.cs代码如下:using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class test1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {    }
        protected void Timer1_Tick(object sender, EventArgs e)
        {
            Label1.Text = DateTime.Now.ToString();
        }
    }
      

  6.   

    楼主是不在执行某些操作的时候陷入死循环,而引起超时.是不是楼主没有对事件进行回传,导致时间一直在刷,从而导致超时。我想你应该去看一下Timer控件的属性。因为它的属性值为告诉你的。我只是给你一点建议。我这就去看看这个问题,有答案就给你发过来不要急。静心好好想一想。。千万不要乱相信你会解决的
      

  7.   

    试试用JavaScript的setInterval:
    <script language="javascript" type="text/javascript">
            function updatePanel()
            {
                var pm = Sys.WebForms.PageRequestManager.getInstance();
                pm._doPostBack('UpdatePanel1','');
            }
            setInterval('updatePanel()',1000);
    </script><form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <div>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:Label ID="Label1"  runat="server" />
            </ContentTemplate>
        </asp:UpdatePanel>
        </div>
    </form>protected void Page_Load(object sender, EventArgs e)
    {
           Label1.Text = DateTime.Now.ToString();
    }
      

  8.   

    刚刚发现如果vs下,设置了中断,当执行到这个中断后,不去响应它,也就是说让页面无响应,则一段时间后也会跳出
    “SYS.WebForms.PageRequestManagerTimeoutException:The server request timed out ”的提示。
    那么引起,IIS下不正常的原因是不是线程阻塞了呢?
      

  9.   

    和程序没有关系,应该是IIS配置的问题。
      

  10.   

    我感觉也应该是IIS的设置问题,不过具体没碰到过
      

  11.   

    你debug一下,到底IIS有没有处理AJAX请求,这个请求是否已经调用ASP.NET处理了。
      

  12.   

    从楼主的代码里看,好像是System.Windows.Forms下的Timer这是个窗体控件,只能用在WinForm程序中,在无窗口的程序里是不能正常工作的。而且就算是更改了服务端的Timer类型使得Timer能正常工作了,也不能得到想到的隔断时间刷新,除非是Page被重用了,不然的话,每次请求服务端都是new的一个新的页面,所有的值都会重新初始化的。楼主好像是要实现客户端隔一段时间访问一下服务器取得更新的时间信息,这个应该是由客户端(也就是用JS)来实现setTimeout或setInterval都可以
      

  13.   


    不好意思,没看到后面贴的代码,Timer是在UpDatePanel里的,是我理解错了一下,有事出去一下,回来看继续看
      

  14.   

    请指教,debug怎么看IIS有没有处理请求呀?如果是VS下运行的话,是正常的呀,那debug看的话,也应该正常吧,还有,VS预览好像不是用IIS的吧。
      

  15.   

    1秒一次?你是在localhost跑吗?如果不是,很容易出问题的。因为浏览器最多只能和服务器端保持2个连接,如果3秒过去了,第1秒发出的请求还没返回,那么第3秒发出的请求就会排队,同时ASP.NET AJAX开始计算超时。如果第1秒的请求过了5秒才返回,这时候就有5个请求在等候,而此时才轮到第3秒发出的请求开始连接,这样滚雪球,肯定会超时。
      

  16.   

    顶一下,我也遇到了这样的问题。前两天还好好的,不知道这几天是怎么了?重新装了系统还不行。在VS下运行好好的,在IIS下就不行了。
      

  17.   

    可能是杀毒软件的问题,我把kabasiji关掉就正常了。