`
cheeruplc
  • 浏览: 115539 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

ASP.NET Post页面及验证视图状态MAC失败问题的正确解决办法(转)

阅读更多
本文转自http://www.cnblogs.com/sephil/archive/2007/10/19/asp_net_post.html

今天做了个首页登陆的页面,是用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" />
分享到:
评论

相关推荐

    验证视图状态 MAC 失败的解决办法

    ### 验证视图状态MAC失败的解决办法详解 #### 一、问题背景与现象 在日常运维过程中,我们可能会遇到“验证视图状态MAC失败”的异常情况。这类问题通常出现在ASP.NET应用中,特别是在涉及多服务器环境或者负载均衡...

    asp.net 虚拟主机时常出现MAC验证失败错误之解决方法

    ASP.NET中的MAC验证失败错误通常是由于视图状态(ViewState)的验证密钥不匹配或未正确配置导致的。在ASP.NET中,视图状态是一种机制,用于在页面的回发过程中保持用户界面的状态。当应用程序在服务器集群或网络场中...

    ASP.NET 2.0的视图状态持久性机制.doc

    ASP.NET 2.0 中,视图状态(ViewState)是一种机制,用于在用户与Web应用程序交互时保持页面和控件的状态。它是一个重要的特性,确保用户在导航网站时,页面和控件的数据能够跨多个HTTP请求得以保留。视图状态通常以...

    asp.net post xml数据 (500) 内部服务器错误解决办法(源代码)

    2. **服务器配置问题**:IIS(Internet Information Services)或ASP.NET配置可能不正确,导致无法处理特定的POST请求。检查Web.config文件,确保配置允许POST操作,并且XML数据类型设置正确。 3. **代码异常**:在...

    CAS的ASP.NET客户端配置及验证

    4. **页面和控制器的授权**:在ASP.NET MVC中,可以使用 `[Authorize]` 特性来限制只有经过CAS验证的用户才能访问某些控制器或视图。 5. **处理CAS票证**:CAS会通过查询字符串参数`ticket`将票证传递给你的应用。`...

    ASP.NET01页面对象模型

    ASP.NET页面对象模型是微软开发的ASP.NET框架中的核心概念,用于处理Web应用程序中的用户交互、数据处理和页面生命周期管理。这一模型为开发者提供了一种结构化的编程方式,使得创建动态网页变得更加高效和灵活。 ...

    asp.net页面代码实现

    3. **视图状态(ViewState)**:ASP.NET自动维护页面控件的状态,即使在POSTBACK时也能保持数据。但这也可能导致页面大小增加,所以需要谨慎使用。 4. **数据绑定**:抽油机系数的计算可能涉及到数据库交互。ASP...

    asp.net 页面防止重复提交

    在ASP.NET开发中,页面重复提交是一个常见的问题,它可能导致数据冗余或一致性错误。防止重复提交对于确保数据的准确性和应用的稳定性至关重要。本文将深入探讨如何在ASP.NET环境中解决这个问题。 首先,理解问题的...

    本人亲自测试正确版-c# asp.net post get代码

    本人亲自测试正确版 c# asp.net post get代码 很多朋友在寻找asp.net或者c#的,post或者get数据的源代码,但是很多是错误的,本人亲自测量正确版,希望给研究c# asp.net post get代码的提供帮助

    asp.net页面编译流程

    ASP.NET 页面生命周期由多个阶段组成,包括初始化(Initialization)、加载视图状态(Load View State)、事件处理(Event Handling)、渲染(Rendering)等。其中,编译流程发生在初始化阶段之前,是整个生命周期的...

    ASP.NET 页面间信息保存

    ASP.NET 页面间信息保存是指在ASP.NET应用程序中,如何在不同的网页之间传递和保存数据。在ASP.NET中,页面有其独特的生命周期,了解这个生命周期对于有效地处理页面间信息的保存至关重要。 **ASP.NET页生命周期** ...

    asp.net表单验证及artDialog弹出框

    ASP.NET是一种基于微软.NET Framework的Web应用程序开发平台,它提供了丰富的功能和工具,使得开发者能够构建动态、数据驱动的Web应用程序。在这个特定的场景中,我们关注的是ASP.NET中的表单验证以及如何结合使用第...

    ASP.NET MVC5 入门 之登录验证

    ASP.NET MVC5 是微软开发的一款用于构建动态网站的框架,它结合了模型-视图-控制器(MVC)设计模式,使开发者能够更高效地构建可维护和测试的Web应用程序。在本入门教程中,我们将重点探讨如何在ASP.NET MVC5中实现...

    asp.net 制作的注册页面

    ASP.NET提供了多种状态管理机制,如视图状态(ViewState)、隐藏字段(HiddenField)等,来保存和恢复页面状态。 6. **数据库交互**:注册信息通常需要存储在数据库中。ASP.NET可以使用ADO.NET或Entity Framework等...

    asp.net登录页面设计

    在Visual Studio中创建ASP.NET项目 所有页面要求采用代码后置的编码方式 在项目中添加登录页面login.aspx,效果见下图 实现没有登录重定向到登录页面login.aspx 用户首次登录网站给出用户名和密码的输入...

    ASP.NET登陆程序

    这个程序的核心功能包括用户注册和登录,涉及到的关键技术主要包括ASP.NET Web Forms、页面生命周期管理、视图状态、服务器控件、数据验证、以及用户会话管理。 首先,ASP.NET Web Forms是ASP.NET框架的一部分,它...

    Asp.Net验证控件应用--用户注册页面

    1、本程序使用基于Asp.Net的6种Asp验证控件; 2、验证控件十分方便,可以帮助我们很好解决提示用户输入的作用,达到一种很好的用户体验效果。 3、本程序,采用了非空验证(RequireValidator)、范围验证...

    ASP.NET页面事件.rar

    - **视图状态**:ASP.NET自动维护的机制,用于在页面回发时保持控件的状态。 - **隐藏字段**:有时开发者会手动使用隐藏字段来存储和恢复页面状态,特别是在不希望使用视图状态或者减少页面大小的情况下。 了解并...

    ASP.NET学习大总结+笔记

    ASP.NET提供了多种状态管理机制,如视图状态、控制状态、隐藏字段、Cookie、Session和Application状态等,帮助开发者在多个请求之间保持数据。 六、ASP.NET安全性 ASP.NET内置的安全特性包括身份验证、授权、加密和...

Global site tag (gtag.js) - Google Analytics