我们有一个在 IIS7 上运行的 asp.net 2.0 Web 应用程序。它使用网络花园和 asp.net 状态服务器。
在页面上,有许多用户控件。在其中一个用户控件上,我们添加了对 button_click 事件的日志记录,该事件在该方法运行时会在日志中写入一行。当我们单击按钮时,它只会定期显示日志条目——表明单击按钮时事件并不总是触发。我们添加了日志记录,因为我们怀疑单击按钮时按钮单击方法并不总是在运行。我们看到的证据似乎证实了我们的怀疑。
当我们移除网络花园并将站点放回单个应用程序池时,应用程序恢复正常 - 每次都会触发按钮事件。当我们在本地开发者机器上运行应用程序时,它也能正常工作。
有没有其他人看到过这样的行为?对于我们可以采取哪些措施来缩小问题范围,有什么建议吗?
编辑:这是所要求的事件来源:
protected void btnSearch_Click(object sender, EventArgs e)
{
Log.Error("Searching...");
SearchArgs args = CtrlToSearchArgs();
SessionManager.SearchQueryString = Request.QueryString;
string url = NavigationManager.BuildSearchUrl(args, null, "*** page url removed here ***");
if (args.PageSize.HasValue)
{
SessionManager.SetInSession(SessionManager.Key.SEARCH_PAGESIZE, args.PageSize.Value.ToString());
}
else
{
SessionManager.SetInSession(SessionManager.Key.SEARCH_PAGESIZE, "10");
}
SessionManager.SearchPanelData = url;
//Set the new args into the session
SessionManager.SearchControlArgs = args;
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Redirect(url);
}
编辑#2:澄清-此设置未使用多个服务器,并且不在负载平衡器下。我们在单个服务器上使用多个 AppPool。