post表单数据到另一个页面没有__VIEWSTATE变量在查询字符串

本文关键字:VIEWSTATE 变量 字符串 查询 数据 表单 另一个 post | 更新日期: 2023-09-27 18:18:22

目前我正在与我的ASP支付网关集成工作。. NET应用程序,其中我必须使用GET方法将几个表单变量发布到支付网关页面。当我使用简单的HTML页面使用表单控件来保存值并将其发布到外部支付网关页面时,一切都很好。

当我试图从我的ASP内部做到这一点。NET c#应用程序,我得到错误"验证视图状态MAC失败。如果此应用程序由Web Farm或集群托管,请确保配置指定相同的validationKey和验证算法。不能在集群中使用AutoGenerate。在检查从我的asp.net c#页面发布到外部支付网关页面的查询字符串时,有一个额外的__VIEWSTATE变量附加到我想要的查询字符串,它包含我想要发布到支付网关页面的变量值。

我已经使EnableViewState="false" EnableEventValidation="false" EnableViewStateMac="false"到<%Page%> ASPX页面中的指令,并添加了"this "。EnableViewState = false"在代码后面被重写的onLoad方法中。

作为参考,添加下面的代码片段:

ASPX page

<body>
    <%--<form id="pgform" name="pgform" action="http://xxx.xx.xx.xx:xxxx/_layouts/Portal/EWallet_BillDesk_Dummy.aspx" method="post" runat="server">  --%>
    <form id="pgform" name="pgform" action="http://xxx.xxx.xx.xx:xxxx/PaymentGateway.aspx"
    method="get" target="_blank" runat="server">
    <asp:HiddenField ID="mid" runat="server"></asp:HiddenField>
    <asp:HiddenField ID="mtrxid" runat="server"></asp:HiddenField>
    <asp:HiddenField ID="mitem" runat="server"></asp:HiddenField>
    <asp:HiddenField ID="amount" runat="server"></asp:HiddenField>
    <script type="text/javascript">
        document.pgform.submit();
        //alert("connector fired");
    </script>
    </form>
</body>

代码后面

    protected override void OnLoad(EventArgs e)
        {
            this.EnableViewState = false;
            base.OnLoad(e);
        }
                protected void Page_Load(object sender, EventArgs e)
        {
                byte[] EncrKeyStream = Encoding.UTF8.GetBytes("nlxcK}~MWgf1WxrT");
                if (Request.QueryString["c"] != null)
                {
                    string qry = ConvertHexToString(Request.QueryString["c"]);
                    string strApplicationNo = qry.Split('|')[0];
                    string strTxnAmount = "1";//qry.Split('|')[1];
                    string mtrxId = "ABCMI" + strApplicationNo;
                    string mItem = "MOTOR INSURANCE";
                    string encmtrxId = EncryptDecrypt.Encrypt(mtrxId, EncrKeyStream);
                    string encmItem = EncryptDecrypt.Encrypt(mItem, EncrKeyStream);
                    string encAmount = EncryptDecrypt.Encrypt(strTxnAmount, EncrKeyStream); ;

                    mid.Value = "ABC_DEV";
                    mtrxid.Value = encmtrxId;
                    mitem.Value = encmItem;
                    amount.Value = encAmount;
                }
}

请在这方面帮助我。我现在真的需要这个解决方案,已经好几个小时了& &;我找不到一个解决办法。请求您的帮助。

提前感谢。

post表单数据到另一个页面没有__VIEWSTATE变量在查询字符串

不要使用<form runat="server" />或服务器端控件。使用标准的<form>和正常的<input>字段(都没有runat="server")代替。这样ASP。. NET不会代表你生成视图状态或其他隐藏字段,你可以跨主机提交表单。

我还提醒您,请安全专家审核您的代码和加密技术的使用。