C# 禁用ViewState的页面是否仍应验证_ViewState字段?

C# 禁用ViewState的页面是否仍应验证_ViewState字段?,c#,asp.net,viewstate,C#,Asp.net,Viewstate,我有一个购物车页面(cart.aspx),它有一个按钮,如果需要付款,它会(有时)发布到第三方支付网关。付款网关将处理付款,然后对我的网站(Order.aspx)进行静默发布,以便我可以更新订单状态 Order.aspx始终抛出无效的viewstate错误,即使页面上禁用了viewstate 发生的情况是Cart.aspx(已启用viewstate)发布到支付网关,网关将作为静默发布的一部分将其发回。即使Order.aspx已禁用viewstate和验证,它仍会尝试验证所提供的_viewstat

我有一个购物车页面(cart.aspx),它有一个按钮,如果需要付款,它会(有时)发布到第三方支付网关。付款网关将处理付款,然后对我的网站(Order.aspx)进行静默发布,以便我可以更新订单状态

Order.aspx始终抛出无效的viewstate错误,即使页面上禁用了viewstate

发生的情况是Cart.aspx(已启用viewstate)发布到支付网关,网关将作为静默发布的一部分将其发回。即使Order.aspx已禁用viewstate和验证,它仍会尝试验证所提供的_viewstate字段

我知道设置
EnableViewState=false
将禁用uu viewstate字段的呈现,但是如果另一个页面提供了该字段,它是否仍应跳过验证

我尝试在Order.aspx的
页面的
事件上调用
ViewState.Clear()
,但是ViewState显然是空的


有没有关于如何解决这个问题的建议?我不想在Cart.aspx上禁用ViewState(在某些情况下可能是必要的),但我不知道如何在Order.aspx上清除它。

即使禁用ViewState,ASP.NET仍然需要它。它使用隐藏的uu viewstate字段作为视图状态、控件状态,并使用来验证请求。您可以创建一个定制的
HttpHandler
,并让订单发布到该页面。当然,您需要对请求的有效性保持谨慎。确保您可以确保请求是合法的,而不是来自黑客。

更糟糕的是,即使隐藏字段丢失或为空,并且页面显然不需要它,验证代码仍会运行!