0

代码是这样的:

protected bool IsOKToSend()
{
    bool IsOK = true;        
    lblErrorSending.Visible = false;
    if (txtUserName.Text == "" )
    { 
    lblErrorSending.Text = "Please enter your username before sending.";
    IsOK = false;
    }
    return IsOK;
}

    protected void btnSubmit_Click(object sender, EventArgs e)
{

    if (IsOKToSend())
    {
        adsUser.Insert();
        Response.Redirect("complete.aspx");
    }
    else
    {
        lblErrorSending.Visible = true;
    }
}

由于某种原因,它不能在实时服务器上始终如一地工作。请记住,它总是在我的本地开发机器上工作,有时(大约 3 次尝试中的 1 次)在现场机器上工作。当它在实时服务器上失败时,页面会重新加载并且所有视图状态都会丢失。

我的 webconfig 文件中有一个默认错误捕获,并且该页面永远不会重定向到错误页面。

一致的错误很容易解决,但这样的事情并非如此。

关于什么可以使此页面有时工作有时不工作和/或为什么视图状态在它无法工作时不保留的任何想法?为什么我在本地机器上没有遇到同样的问题?

我尝试合并这两个函数以查看调用外部函数是否导致问题,但不幸的是它没有改变任何东西。此外, IsOK 的值似乎不会影响我是否会得到错误。

我删除了页面加载功能中的所有代码以确保正确排除故障,但我仍然遇到同样的问题。

任何想法将不胜感激。

编辑:我打算按原样发送,但我决定尝试以下方法:

protected void btnSubmit_Click(object sender, EventArgs e)
{
    bool IsOK = true;        
    lblErrorSending.Visible = false;
    if (txtUserName.Text == "" )
    { 
        lblErrorSending.Text = "Please enter your username before sending.";
        IsOK = false;
    }
    lblErrorSending.Visible = !IsOK;        
}

如果我在按钮上单击几次,则在几次尝试后页面确实会丢失视图状态值,但并非总是如此。因此,这里的主要问题似乎是视图状态始终无法正常工作的问题。任何的想法?

谢谢。

4

1 回答 1

1

我会在这里大胆猜测一下,说您没有在生产中使用粘性会话,并且您有多个 Web 服务器。但是在开发中,您只有一台服务器。您正在使用负载平衡,并且每隔一段时间,您就会在 macing.config 中使用不同的机器密钥被踢到不同的服务器。应用程序蓬勃发展。

或者这根本不是。:)

如果是问题所在,您可以关闭视图状态或同步 machine.config 中的密钥,问题应该会消失。

于 2008-11-14T18:14:35.510 回答