|
今天做了个首页登陆的页面,是用Request.Form接收参数的 然后又做了个测试页面test.aspx,代码如下: <body> <form id='form1' runat='server' method='post' action='Default.aspx'> <div> <input type='text' runat='server' id='Solution' value='(Local)' /> <input type='text' runat='server' id='UserName' value='ricky' /> <input type='text' runat='server' id='Password' value='111' /> <input type='submit' runat='server' /> </div> </form> </body> 但是测试的时候发现test页面始终post到他自己 去掉runat标记则可以post到default.aspx,但去不到值 后来在IE里面查看源代码,发现html是这个样子的<form id='form1' method='post' action='test.aspx'> 也就是说生成的html里始终是post到自己的 知道问题就好办了 修改代码: <form id='form1' runat='server' method='post' onsubmit='this.action='Default.aspx''> 一切OK,post到default.aspx了 然后又报错了 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate 去网上搜了搜,说问题的原因是asp.net的runat='server' 会对ViewStat进行MAC的加密,解决办法基本上就2个: 1:修改当前页面的@page属性,添加enableEventValidation='false' viewStateEncryptionMode='Never' 或者在web.config里添加<pages enableEventValidation='false' viewStateEncryptionMode='Never' /> 2:在web.config里指定validationKey和验证算法 <machineKey validation='3DES' validationKey='319B474B1D2B7A87C996B280450BB36506A95AEDF9B51211' decryption='3DES' decryptionKey='280450BB36319B474C996B506A95AEDF9B51211B1D2B7A87' /> 可是实际试下来发现没用,问题依旧 查了查资料发现加上实际测试,终于发现了真正的解决办法 修改当前页面的@page属性,添加enableEventValidation='false' enableViewStateMac='false' 或者在web.config里添加<pages enableEventValidation='false' enableViewStateMac='false' />
|