如何将asp.net表单的值提交到其他应用程序中的另一个asp.net表单

如何将asp.net表单的值提交到其他应用程序中的另一个asp.net表单,asp.net,post,webforms,Asp.net,Post,Webforms,net应用程序webapp1和webapp2,在每个应用程序中我都有一个asp.net表单Deafult.aspx 我想从webapp1中的Default.aspx进行表单提交,并在webapp2中接收该值 我试图通过简单地设置action=“webapp2 location”来实现这一点,但它抛出了下面的错误 viewstate MAC验证失败。如果此应用程序由Web场或群集托管,请确保配置指定了相同的validationKey和验证算法。无法在群集中使用自动生成 我甚至在web.config

net应用程序webapp1和webapp2,在每个应用程序中我都有一个asp.net表单Deafult.aspx

我想从webapp1中的Default.aspx进行表单提交,并在webapp2中接收该值

我试图通过简单地设置action=“webapp2 location”来实现这一点,但它抛出了下面的错误

viewstate MAC验证失败。如果此应用程序由Web场或群集托管,请确保配置指定了相同的validationKey和验证算法。无法在群集中使用自动生成

我甚至在web.config中添加了machinekey元素

但它仍然显示出同样的错误

这是向webapp2发送数据的webapp1表单的代码

<form id="form1" method="post" runat="server" action="http://localhost/webValRec/Default.aspx">
    <div>
        <asp:Label ID="Label1" runat="server" Text="Value to pass "></asp:Label>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="Button" />
    </div>
    </form>

谢谢

您击中了靶心:您需要确保在单独的服务器上进行视图状态验证

解决办法是:

  • 禁用ViewState:EnableViewState=“false”
  • 禁用MAC验证('unsecure'解决方案):EnableViewStateMac=“false”
  • 配置两台服务器:。您可能错过了加密和解密密钥生成部分

在处理回发时,表单可能也必须严格相同(相同的控件):在webapp2上添加缺少的控件。

你击中了靶心:你需要确保在单独的服务器上进行视图状态验证

解决办法是:

  • 禁用ViewState:EnableViewState=“false”
  • 禁用MAC验证('unsecure'解决方案):EnableViewStateMac=“false”
  • 配置两台服务器:。您可能错过了加密和解密密钥生成部分

处理回发时,表单可能也必须严格相同(相同的控件):在webapp2上添加缺少的控件。

一个快速解决错误的方法就是不将viewstate提交到第二页。您可以在webapp1/Default.aspx的onload事件期间通过javascript删除它

添加一个名为onload的javascript函数

// javascript function to remove viewstate form element.
function removeViewState() {
    var viewstate = document.getElementById('__VIEWSTATE');
    viewstate.parentNode.removeChild(viewstate);
}
将onload事件添加到主体以调用函数

<body onload="javascript:removeViewState();">

绕过错误的一个快速方法是不将viewstate提交到第二个页面。您可以在webapp1/Default.aspx的onload事件期间通过javascript删除它

添加一个名为onload的javascript函数

// javascript function to remove viewstate form element.
function removeViewState() {
    var viewstate = document.getElementById('__VIEWSTATE');
    viewstate.parentNode.removeChild(viewstate);
}
将onload事件添加到主体以调用函数

<body onload="javascript:removeViewState();">
$(document).ready(function () {
    $("#__VIEWSTATE").remove();
});