Вот я сегодня решил эту проблему. Я начал с этой статьи на C # Corner, но нашел пример - хотя и технически обоснованный - немного неполным. Все, что он сказал, было правильным, но мне нужно было найти несколько внешних сайтов, чтобы собрать все вместе, чтобы работать точно так, как я хотел.
Не помогло то, что пользователь технически не отправлял форму вообще; они нажимали на ссылку, чтобы перейти в наш центр поддержки, но чтобы зарегистрировать их в посте http, нужно было зайти на сайт центра поддержки.
Это решение включает в себя использование HttpContext.Current.Response.Write () для записи данных для формы, а затем использование Javascript в
.
<body onload="">
способ отправки формы по правильному URL.
Когда пользователь нажимает ссылку Центра поддержки, вызывается следующий метод для написания ответа и перенаправления пользователя:
public static void PassthroughAuthentication()
{
System.Web.HttpContext.Current.Response.Write("<body
onload=document.forms[0].submit();window.location=\"Home.aspx\";>");
System.Web.HttpContext.Current.Response.Write("<form name=\"Form\"
target=_blank method=post
action=\"https://external-url.com/security.asp\">");
System.Web.HttpContext.Current.Response.Write(string.Format("<input
type=hidden name=\"cFName\" value=\"{0}\">", "Username"));
System.Web.HttpContext.Current.Response.Write("</form>");
System.Web.HttpContext.Current.Response.Write("</body>");
}
Ключ к этому методу в том бите загрузки Javascript, который, когда загружается тело страницы, отправляет форму, а затем перенаправляет пользователя обратно на мою домашнюю страницу. Причиной такого бреда является то, что я запускаю внешний сайт в новом окне, но не хочу, чтобы пользователь повторно отправлял скрытую форму, если обновляет страницу. Кроме того, эта скрытая форма толкнула страницу на несколько пикселей, что действовало мне на нервы.
Я бы очень заинтересовался любыми более чистыми идеями, которые кто-либо имеет по этому поводу.
Эрик Сиппл