c# - ASP.NET DropDownValue 不会跨 webfarm 中的一台服务器持久保存

标签 c# .net asp.net viewstate

我有一个问题,DropDownListone 服务器上的 PostBack 之后丢失了它的 SelectedValue网络农场。在其他服务器上,一切正常。

所有服务器都使用相同版本的代码,具有相同的服务包和应用的所有更新。当我在本地机器上运行时,代码也能正常工作(但指向生产数据库)。

我认为 ViewState 可能是问题所在,但我确认 web.config、aspx 页面和代码在所有机器上都是相同的。

我确实收到了 Input string was not in a correct format. 在尝试 Convert.ToInt32() 时出错。

我添加了 Trace.Write 来确定 DropDownList 值在这个特定服务器上是null .

代码片段

protected void Page_Load(object sender, System.EventArgs e)
{
    if (!Page.IsPostBack)
    {
        LoadClientDropDown();
    }
}

protected void LoadClientDropDown()
{
    //load the drop down ddlClients from data
}

protected void btnSave_Click(object sender, System.EventArgs e)
{
    int clientValue = Convert.ToInt32(ddlClients.SelectedValue);
}

我可能遗漏了什么?

最佳答案

应用程序是否已配置为在网络场上运行?查看这篇 MSDN 文章:

http://msdn.microsoft.com/en-us/library/ms998288.aspx#paght000007_viewstate

您需要确保 machineKey 在您的应用运行的每台服务器上保持一致。您可以在 web.config 中定义它。我记得以前的雇主没有这样做,但遇到了 View 状态问题。

关于c# - ASP.NET DropDownValue 不会跨 webfarm 中的一台服务器持久保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1190831/

相关文章:

c# - 当从 'return' block 中调用 'using' 时会发生什么?

c# - 如何创建可配置的异步超时

asp.net - 将 Excel 工作表导入 MS SQL 数据库

asp.net - 在 Chrome ajax 异步回发端不起作用

c# - 基于类设计生成类 - 开源工具?

c# - 与#include Someplace.Models 等效的 aspx/ascx View 页面是什么?

c# - 通用方法 : Cannot convert from Tuple to T

.net - .NET 中的任何多核排序实现?

.net - 一个空的委托(delegate)会吃掉内存吗?

C# 在调用堆栈中捕获未处理的异常