与viewstate / function / server vs开发服务器不一致
题
代码如下:
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中的密钥,问题应该消失。
不隶属于 StackOverflow