思智网络—旗下品牌
忘记密码
长沙云服务器,长沙服务器租用,长沙服务器托管
全国统一服务热线:88900700(7*24h)
 思智网络——专注于企业级IDC解决方案!
  • 顶级网络高速接入
  • 十年经验管理完善
  • 资质齐全放心可靠
  • 专业服务快速稳定
  • 免费备案快速高效
  • 自维机房全年无休
  • 免费测试省钱省心
  • 行业评价有口皆碑

解决方案专区 more>>

负载均衡解决方案
服务器网络安全解决方案
数据异地灾备解决方案
网络加速综合解决方案

典型客户 more>>

  • 潇湘晨报网
  • SANY
  • 盛大金禧
  • 湖南有线
  • 金杯电工
  • 长沙长海医院
  • 蝴蝶树
  • 中国人民大学
  • 湖南妈妈网
  • 美迪装饰
  • 小新星
  • 湖南武警医院
思智网络学院

WEB服务器负载均衡问题的解决

发表:湖南数据中心文员   文章来源:湖南思智网络科技有限公司   
[摘要]     环境说明:   开发平台是DOTNET B/S # Framework 1.1   正式WEB服务器和测试机,均为win2003   原有一个主网站,在六台WEB服务器做负载均衡。运行……

     环境说明:

  开发平台是DOTNET B/S # Framework 1.1

  正式WEB服务器和测试机,均为win2003

  原有一个主网站,在六台WEB服务器做负载均衡。运行比较稳定。

  现新开发一个子站,将布署在另三台WEB服务器上做负载均衡。这个负载均衡设置类似主网站的设置。

  解决步骤:

  1)子站在测试机测试通过,运行正常。准备布署到正式环境下(三台WEB服务器)

  2)将子站程序拷贝到那三台WEB服务器上,配置好子站相关配置,开放站点与负载均衡开始测试。

  3)测试时,页面显示正常,但在触发服务端事件时出现异常。

  错误信息“Viewstate is invalid for this page”(此页的视图状态无效)没有为解决此问题提供足够信息

  同样的程序为何在测试机运行没问题,放到正式环境下,就出现异常呢?

  在微软网站要查到这个异常的解释(http://support.microsoft#/default.aspx?scid=kb;zh-cn;831150),说建议安装Microsoft # Framework 1.1 Service Pack 1。

  于是,怀疑没有装这个补丁,就查看注册表项:

  项名称:HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322

  SP值为0,表明没有装Framework 1.1 Service Pack,

  然后去微软网站下载了# Framework 1.1 Service Pack 1和# Framework 1.1 Service Pack 1 ASP# 安全更新 - Windows Server 2003

  4)装上这两个补丁后,运行子站程序,在触发服务端事件时仍旧出现异常。异常如下:

  异常详细信息:System.Web.HttpException: 无法验证数据。

  堆栈跟踪:

以下为引用的内容:

[HttpException (0x80004005): 无法验证数据。]

[HttpException (0x80004005): Authentication of viewstate failed. 1) If this is a cluster, edit configuration so all servers use the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster. 2) Viewstate can only be posted back to the same page. 3) The viewstate for this page might be corrupted.]

  再回到831150那篇文章看:“应用此修复程序后,视图状态错误信息标题将变成“Unable to Validate Data”。尽管新的错误信息格式没有对问题进行具体描述,但它比以前的错误信息格式提供了更多信息。”

  得知应该是ViewState值已被截断?!

  问题就转化:什么原因导致"ViewState值已被截断"呢?

  因为程序在测试环境下运行没问题的,那么可能是系统级的问题。

  比较一下正式和测试环境:正式环境是三台Server做负载均衡,而测试环境只一台Server。

  5)将负载均衡设置修改了一下,只开放一台WEB Server。测试后,发现不出现那个异常。三台机分别测试,均无异常。

  推测:可能是负载均衡设置有问题。于是找来系统管理员,他说,子站的负载均衡设置跟主站一样的啊。但还是请他再确认一下两个负载均衡设置的不同之处。

  经再次的仔细检查,发现负载均衡Pool的Persistence Type(进程延续)为None,也就是说服务端不保持连接状态。这样,每次服务端事件被触发时,就会导致"ViewState值已被截断"。于是将Persistence Type(进程延续)的值改为Simple,Timeout设为600秒。

  总结:

  程序员不单要写好程序,也要适当的了解系统。这个问题,不一定会经常遇到,作为一个解决问题的思路,供大家分享。

  附:负载均衡一般设三个地方来保证进程延续。首先启动负载均衡,然后设置“Enable Connection Rebind”为true.最后Persistence Type一般设为Simple再加上超时时间。

收缩

  • 售前咨询
  • 技术支持
  • 备案专员
  • 24小时客服热线:
  • 88900700

微信号:hnidccn