代码如下:

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;
    }
}

由于某种原因,它在实时服务器上不能始终如一地工作。 请记住,它始终适用于我的本地开发机器和SOMETIMES (大约三分之一的尝试)在现场机器上工作。当它在实时服务器上失败时 页面重新加载,所有视图状态都丢失了。

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

一致的错误很容易排除故障但是这样的事情不是。

任何关于什么可能使这个页面有时工作的想法,有时候没有和/或为什么 当viewstate无法工作时,它不会被保留? 为什么我的本地机器上没有出现同样的问题?

我尝试合并这两个函数来查看是否正在调用外部函数 问题,但不幸的是它没有改变任何东西。此外,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;        
}

如果我在按钮上单击几次,页面就会丢失视图状态值 经过几次尝试但并非总是如此。 所以这里的主要问题似乎是viewstate的问题 一直正常工作。有什么想法吗?

感谢。

有帮助吗?

解决方案

我会在这里猜测,并说你没有在生产中使用粘性会话,而且你有多个网络服务器。但在开发中,您只有一台服务器。您正在使用负载平衡,并且经常会在maching.config中使用不同的机器密钥将其踢到另一台服务器。应用程序热潮。

或者根本不是这样。 :)

如果是问题,您可以关闭viewstate或同步machine.config中的密钥,问题应该消失。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top