2016-02-29 3 views
0

Я работаю над веб-приложением (используя webForms not mvc), который берет ввод пользователя и добавляет его в таблицу базы данных. Это приложение будет доступно пользователям в dev, qa и производственной среде, попав в каждую среду собственной базы данных.Как передать EF6 Entity на новую страницу на другом сервере

В настоящее время у меня есть кнопка продвижения, которая работает, подключившись к базе данных QA из Dev или базы данных Prod из QA, вставляя/обновляя данные там, а затем перенаправляясь в версию приложения QA/Prod.

Вместо этого я хотел бы сохранить myEntity в переменной и отправить ее с помощью перенаправления. Я имею в виду что-то вроде этого:

MyEntityType myEntity = UserInputData(); 
Response.Redirect("myQAurl", myEntity); 

Тогда в моем QA Page_Load есть что-то вроде:

If(fromDev){ 
    loadPageWithMyEntity(); 
} 

Делая это таким образом, я надеюсь, чтобы предотвратить подключение к базе данных QA/Prod непосредственно от разработчика - > QA или QA -> Prod.

Если прохождение Субъект не будет работать, я мог бы также использовать массив, список и т.д.

+0

Любые данные в перенаправлении должны быть в строке запроса. Можете ли вы представить свою сущность в строке запроса как набор пар ключ/значение? Или, возможно, JSON-сериализованную версию объекта, которая затем де-сериализуется на принимающей странице? – David

+0

В моей сущности есть 40 полей (я знаю его много, но я не администратор БД), поэтому помещать их в строку запроса не идеально. Кроме того, данные содержат пароль. Возможно, я могу использовать сериализацию json. Должен ли я установить соединение с сервером для передачи объекта json или есть способ использовать целевой URL? –

+0

Если вы сериализуете объект, тогда эта строка будет значением в строке ключа/значения строки запроса. Разумеется, он должен быть закодирован в URL.И конечная точка, получающая его, должна будет де-сериализовать его из строки в объект. Обратите внимание, что это может сделать * очень длинный URL для большого объекта, что может быть проблематичным. Если объект такой большой, вам может потребоваться поместить его в поля формы на странице и использовать JavaScript, чтобы сделать запрос POST из браузера, поскольку перенаправление не будет работать для POST. Что касается паролей ... Почему они отправляются таким образом, в первую очередь? – David

ответ

0

При выполнении редирект:

Response.Redirect("myQAurl", myEntity); 

Путь, который работает в том, что сервер в основном говорит браузеру введите запрос GET к указанному URL-адресу. Это означает, что любая информация, отправленная по этому перенаправлению, должна быть в строке запроса на этом URL-адресе. Таким образом, у вас было бы два варианта:

  1. Включите в строку запроса кучу пар ключ/значение, которое может быть использовано для повторной конструирования объекта на другом конце.
  2. Сериализуйте сущность в строку и укажите одну пару ключ/значение с этим значением, а затем де-сериализуйте объект на другом конце.

Если объект большой, это может быть проблематичным. Существует ограниченное ограничение размера URL-адреса на большинстве веб-серверов.

Для крупных объектов, чтобы действительно перевести из одной системы в другую, где они не имеют доступа к какой-либо обратной стороне, вам, скорее всего, потребуется запрос POST. Что нельзя сделать с перенаправлением. Вместо этого вы должны показать пользователю форму (которая может быть полностью скрытой и невидимой, поэтому необязательно показано), и пользователь должен будет опубликовать эту форму (что может быть сделано с помощью JavaScript, поэтому необязательно пользователь Это).

Помимо этого, вы, вероятно, смотрите на обратную связь, например, сохраняя данные во временном местоположении базы данных на одной системе и потребляя ее на другой.

Смежные вопросы