问题描述
||
在IIS 7.5中通过使用this.Form.Submit查看状态无效
一个新的WebSite,我们在IIS 6.0上对其进行测试,就可以了。
但是,当我们在IIS 7.5上进行测试时,将显示“视图状态无效”。
错误信息:
端口:3739
用户代理:Mozilla / 4.0(兼容; MSIE 6.0; Windows NT 5.1; SV1)
ViewState:/ wEPDwUJOTM1 [*] MCIg ...
System.FormatException:Base-64 char数组的长度无效
[*]已被删除,因为时间太长,但是\“ MCIg ... \”在日志中。
我检查源代码并找到下一部分:
<asp:Button ID=\"Btn_search\" runat=\"server\" CssClass=\"submitbutton\"
OnClientClick=\"javascript:this.disabled=true;this.form.submit();\"
Text=\"Search\" UseSubmitBehavior=\"False\" OnClick=\"Btn_search_Click\" />
当我删除[OnClientClick = \“ javascript:this.disabled = true; this.form.submit(); \”]并删除[UseSubmitBehavior = \“ False \”]时。该页面将运行确定。
看起来像[this.form.submit]导致错误。
但是我测试如下
1. IIS 6.0,无代理,IE6.0或IE8.0,测试确定。
2. IIS 6.0,使用代理服务器,IE6.0或IE8.0,然后单击“测试”,然后单击“确定”。
3. IIS 7.5,使用代理,IE6.0或IE8.0,然后单击“测试”,然后单击“确定”。
4. IIS 7.5,无代理,IE6.0或IE8.0测试错误。
谁知道为什么,使用代理服务器就可以,否则出错。
解决方法
您的答案可能是__doPostBack()。在这里看看:
显式__doPostBack()
您的变体可能应如下所示:
<asp:Button ID=\"Btn_search\" runat=\"server\" CssClass=\"submitbutton\"
OnClientClick=\"this.disabled=true;__doPostBack(\'Btn_search\',\'\');return false;\"
Text=\"Search\" OnClick=\"Btn_search_Click\" />