负载IP为C, 负载服务器设置了两台,分别为A与B,服务器环境为winsever2008+iis7。
用winserver2008里自带的负载平衡管理(NLB),设置了负载均衡“筛选模式”为“多个主机,无相关性”
现在遇到的问题:系统中使用GridView实现了数据的展现,并带有一行操作列。整个GridView的HTML如下:
<asp:GridView runat="server" onrowcommand="GridView1_RowCommand">
<Columns>
<asp:TemplateField HeaderText="85">
<HeaderStyle HorizontalAlign="Center" Width="40px"></HeaderStyle>
<ItemStyle HorizontalAlign="Center" Width="40px"></ItemStyle>
<ItemTemplate>
85
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="状态">
<HeaderStyle HorizontalAlign="Center" Width="40px"></HeaderStyle>
<ItemStyle HorizontalAlign="Center" Width="40px"></ItemStyle>
<ItemTemplate>
<asp:LinkButton CommandName="ViewProcess" runat="server" CausesValidation="false" Text="查看" ></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
点击“查看”操作,事件GridView1_RowCommand 会经常出现没响应的情况。如果不使用负载,单独访问A或者B,均没问题。分析了一下,问题应该出现页面打开的请求定位到了A服务器,但是点击“查看”操作时,回发请求定位到了B服务器,结果B服务器在重新绑定响应事件的时候出了问题,绑定失败,响应事件没执行。
这个问题还存在于用户控件(.ascx)里放置的一些服务器控件,如按钮<asp:button>等等。
这些问题均是在系统使用了负载均衡后产生的。单独访问服务器完全没有问题。
各位大侠帮我分析分析吧。多谢。