Я пытаюсь внедрить систему единого входа, позволяющую пользователям входить в систему нескольких поставщиков. У каждого поставщика есть токен, который нужно отправить как форму сообщения. Я отправляю этот токен как HTTPRequest и получаю ответ обратно, как показано в коде ниже
private static string PostDataToServerAndGetResponse()
{
Uri uri = new Uri("http://www.amazon.com/exec/obidos/search-handle-form/102-5194535-6807312");
string data = "field-keywords=ASP.NET 2.0";
if (uri.Scheme == Uri.UriSchemeHttp)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.Method = WebRequestMethods.Http.Post;
request.ContentLength = data.Length;
request.ContentType = "application/x-www-form-urlencoded";
StreamWriter writer = new StreamWriter(request.GetRequestStream());
writer.Write(data);
writer.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string tmp = reader.ReadToEnd();
response.Close();
//return response.ResponseUri.AbsoluteUri;
return tmp;
}
return null;
}
Возвращаемое значение - tmp - это строка HTML, которую я хочу отобразить в Iframe. Я могу сделать это, добавив элемент управления Literal в iframe и установив для свойства text значение, возвращаемое вышеуказанной функцией
<iframe id="myIFrame" runat="server" height="700" width="950" frameborder="0" />
<asp:Literal ID="litFrame" runat="server" Mode="PassThrough" />
</iframe>
litFrame.Text = SAML.PostDataToServerAndGetResponse();
Приведенный выше код прекрасно отображает страницу, но когда я нажимаю на любую из ссылок, открывается новая страница.
Явного сценария, вызывающего сброс фрейма, не существует, потому что если я установлю атрибут src в iframe на response.ResponseUri.AbsoluteUri, все клики и обновления страницы останутся в фрейме.
Чего я хочу достичь
Отображение результата публикации в Iframe и всех пользователей для выполнения любых кликов.
Условие: щелчки во фрейме должны обновить фрейм, а не переходить на новую страницу.