Как автоматически войти на другую страницу из приложения Silverlight? - PullRequest
3 голосов
/ 20 мая 2011

Я написал страницу Silverlight, которая действует как средство регистрации учетной записи для существующего веб-приложения. Таким образом, он собирает сведения о пользователях, а затем отправляет их на сервер через службу RIA WCF, где учетная запись создается в базе данных.

По сути, я хочу автоматически регистрировать пользователя в приложении, когда служба сообщает, что регистрация прошла успешно, но я не уверен, как это сделать.

Моя текущая мысль заключается в том, что если я смогу ПОСТАВИТЬ имя пользователя и пароль на существующую страницу входа в систему, то все будет хорошо. Однако, хотя я могу найти множество примеров того, как сделать HTTP-сообщение из Silverlight, они, как правило, предполагают, что я хочу отобразить ответ в существующем приложении Silverlight - нет, я хочу, чтобы приложение Silverlight ушло и Я хочу, чтобы вошедшее в систему приложение отображалось так, как будто я нажал кнопку входа на странице входа.

Что-то вроде

HtmlPage.Window.Navigate(new Uri("http://mysite.com/Login.aspx", UriKind.Absolute));

кроме возможности публикации.

Я не хочу передавать имя пользователя и пароль в строке запроса.

Кто-нибудь знает, как я могу это сделать? Или, если это неправильный подход, кто-то может направить меня в правильном направлении.

Ответы [ 2 ]

1 голос
/ 20 мая 2011

Добавьте форму (она может быть скрыта) на страницу HTML, на которой размещено содержимое Silverlight.Затем из Silverlight используйте DOM, чтобы программно отправить форму.

0 голосов
/ 23 мая 2011

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

На странице aspx я добавил два скрытых поля для имени пользователя и пароля внутри тега формы:

<form id="form1" style="height:100%" action="http://mysite.com/Login.aspx" method="post">
    <input type="hidden" id="username" name="username" />
    <input type="hidden" id="password" name="password" />
    <div>silverlight app</div>
</form>

Затем в моем приложении Silverlight, когда сервис успешно завершился, я добавил следующий код для входа в веб-приложение:

private void Logon(string username, string password)
{
    HtmlElement usernameField = HtmlPage.Document.GetElementById("username");
    usernameField.SetAttribute("value", username);

    HtmlElement passwordField = HtmlPage.Document.GetElementById("password");
    passwordField.SetAttribute("value", password);

    HtmlPage.Document.Submit();
}

Вы, возможно, заметили выше, что я удалил runat = "server" в теге формы выше. Мне пришлось это сделать, потому что я получал ошибку « Проверка ViewState MAC не удалось » на странице входа, на которую я публиковал. Сначала я попытался добавить это в web.config:

<pages enableViewState="false" enableEventValidation="false" viewStateEncryptionMode="Never" enableViewStateMac="false"/>

но нет из этих опций не имеет значения. Конечно, если вы используете обычную HTML-страницу, это не будет проблемой.

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