public string DecryptionParms
    {
        get
        {
            return Request.QueryString["tosee"];  //这里报错
        }
    }    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (CheckParms())
            {
                Thread thread = new Thread(Check);                thread.IsBackground = true;                thread.Start();
                
                Response.Write(" ");
            }
        }
    }    protected static readonly RequestDetails objRequestDetails = new RequestDetails();    public void Check()
    {
        string[] parms = DecryptionParms.Split('#');
        bool relParms = true;
        long[] longParms = new long[3];
        for (int i = 0; i < 3; i++)
        { 
            if (string.IsNullOrEmpty(parms[i]))
            {
                relParms = false;
                break;
            }
            else
            {
                relParms = long.TryParse(parms[i], out longParms[i]);
                if (!relParms)
                    break;
            }
        }
        if (relParms)
        {
            objRequestDetails.Visitor = longParms[0];
            objRequestDetails.VisitorPage = longParms[1];
            objRequestDetails.VisitorPage = longParms[2];
            objRequestDetails.ImageOutCode = string.Empty;
            objRequestDetails.Behavior = 0;  //访问
            try
            {
                lock (objRequestDetails)
                {
                    StatisticsManager.AddRequestDetails(objRequestDetails);
                    Thread.Sleep(1000);
                }
                Response.Write(" ");
            }
            catch (SqlException se)
            {
                Response.Write(se.Message);
            }
        }
    }    /// <summary>
    /// 检查参数是否传递过来
    /// </summary>
    /// <returns></returns>
    protected bool CheckParms()
    {
        if (string.IsNullOrEmpty(Request.QueryString["tosee"]))
            return false;
        else
            return true;
    }

解决方案 »

  1.   

    试过了。
    也一样。然后Thread调用的方法里不能Repsonse.Write吗
      

  2.   

    我把Request.QueryString["tosee"];  放到Check()里获取,调式了二次,一次成功,一次报"请求在此上下文中不可用"
      

  3.   

    线程里面不是Request请求,哪来的 HttpContext.Current.Request啊
      

  4.   

    一个办法是将 HttpContext.Current.Request对象作为参数,再调用的时候传递到线程里面
      

  5.   

    Thread thread = new Thread(Check);
    这一步只有无参的方法可以传递
      

  6.   

    Thread th = new Thread(new ParameterizedThreadStart(method));
    th.Start("参数"));
    private void method(string s)
    {}
    public Thread(
      ParameterizedThreadStart start
    )
    public delegate void ParameterizedThreadStart(
      Object obj
    )
      

  7.   

    本帖最后由 net_lover 于 2011-02-13 11:27:37 编辑
      

  8.   

    另外一个方法,你可以把你的Thread放在一个类里面,类里面定义一个 System.Web.HttpContext 类型的变量