我有一个购物车页面(Cart.aspx),如果需要付款,该按钮会(有时)发布到第三方支付网关。支付网关将处理付款,然后对我的网站(Order.aspx)进行无声发布,以便我可以更新订单状态。
即使在页面上禁用了viewstate,Order.aspx也会抛出无效的viewstate错误。
正在发生的事情是Cart.aspx(已启用viewstate)发布到支付网关,网关将其作为静默帖子的一部分发回。即使Order.aspx禁用了视图状态并禁用了验证,它仍然会尝试验证它所给出的__viewstate字段。
我知道设置EnableViewState=false
将禁用__viewstate字段的呈现,但如果另一个页面提供该字段,它是否应该仍然跳过验证?
我尝试在Order.aspx的ViewState.Clear()
事件上调用Page_Init
,但ViewState显然是空的。
有关如何解决此问题的任何建议?我不想在Cart.aspx上禁用ViewState(在某些情况下可能是必要的),但我无法弄清楚如何在Order.aspx上清除它。
答案 0 :(得分:1)
即使禁用ViewState,ASP.NET仍然需要它。它使用隐藏的__viewstate字段作为视图状态,控制状态,并用于验证请求。您可以创建自定义HttpHandler
并让订单发布到该页面。当然,您需要对请求的有效性保持谨慎。确保您可以确保请求是合法的,而不是来自黑客。