Как отправить значения формы asp.net в другую форму asp.net в другом приложении - PullRequest
0 голосов
/ 28 февраля 2011

сетевых приложений webapp1 и webapp2, в каждом приложении у меня есть форма asp.net Deafult.aspx

Я хочу сделать отправку формы из Default.aspx в webapp1 и получить значение в webapp2.

Я попытался сделать это, просто установив action = "webapp2 location", но он выдает ошибку ниже

Проверка MAC-адреса состояния представления не удалась.Если это приложение размещено на веб-ферме или в кластере, убедитесь, что в конфигурации указан одинаковый ключ validationKey и алгоритм проверки.AutoGenerate нельзя использовать в кластере.

Я даже добавил элемент machinekey в web.config

, но он все еще показывает ту же ошибку.

Это код дляФорма webapp1, которая отправляет данные в webapp2

<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>

Код формы, которая получает значения и отображает в метке

<form id="form1" runat="server">
    <div>
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    </div>
    </form>

код, заданный для установки значения метки

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = Convert.ToString(Request.Form["TextBox1"]);
    }
}

Спасибо

Ответы [ 2 ]

2 голосов
/ 28 февраля 2011

Один из быстрых способов обойти ошибку - просто не отправлять состояние просмотра на вторую страницу. Вы можете удалить его через javascript во время события onload webapp1 / Default.aspx

Добавить функцию JavaScript, которая будет вызываться при загрузке ...

// javascript function to remove viewstate form element.
function removeViewState() {
    var viewstate = document.getElementById('__VIEWSTATE');
    viewstate.parentNode.removeChild(viewstate);
}

Добавить событие onload в тело для вызова функции ...

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

Если вы используете jquery, вы можете сделать это еще проще, удалив состояние просмотра с помощью обработчика документов ...

$(document).ready(function () {
    $("#__VIEWSTATE").remove();
});
2 голосов
/ 28 февраля 2011

Вы попадаете в яблочко: вам нужно обеспечить проверку состояния просмотра на отдельных серверах.

Решения:

  • Отключить ViewState: EnableViewState = "false"
  • Отключить проверку MAC ( «небезопасное» решение ): EnableViewStateMac = "false"
  • Настройка двух серверов: Как: настроить MachineKey в ASP.NET 2.0 . Возможно, вы пропустили этап генерации ключа шифрования и дешифрования?

При обработке постбека формы могут также быть строго одинаковыми (одинаковые элементы управления): добавьте отсутствующие элементы управления в ваше веб-приложение2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...