Я пытаюсь войти на свой рабочий сайт, используя эмулятор WP7 (Mango), используя аутентификацию по формам.(В конце концов создайте приложение WP7, которое позволит вам просматривать некоторые вещи на этом сайте)
Webconfig сайтов содержит следующее:
<system.web.extensions>
<scripting>
<webServices>
<authenticationService enabled="true" requireSSL="false"/>
</webServices>
</scripting>
У них есть пример кода, который в основном регистрируетсяпутем вызова ODataService для аутентификации, передачи пользователя / pass и получения куки-файла аутентификации.
С этим файлом cookie все новые запросы включают его в ODataService и должны иметь возможность извлекать данные.
Перед выполнением каких-либо запросов - получите файл cookie аутентификации
private static string GetAuthenticationCookie(string username, string password)
{
if (authenticationCookie == null)
{
string loginServiceAddress = websiteUrl + "/Authentication_JSON_AppService.axd/Login";
var request = CreateAuthenticationRequest(username, password, loginServiceAddress);
var response = request.GetResponse();
if (response.Headers["Set-Cookie"] != null)
{
authenticationCookie = response.Headers["Set-Cookie"];
}
else
{
throw new SecurityException("Invalid credentials");
}
}
return authenticationCookie;
}
private static WebRequest CreateAuthenticationRequest(string username, string password, string loginServiceAddress)
{
var request = HttpWebRequest.Create(loginServiceAddress);
request.Method = "POST";
request.ContentType = "application/json";
var body = string.Format(
"{{ \"userName\": \"{0}\", \"password\": \"{1}\", \"createPersistentCookie\":false}}",
username,
password);
request.ContentLength = body.Length;
var stream = request.GetRequestStream();
using (var sw = new StreamWriter(stream))
{
sw.Write(body);
}
return request;
}
Я не могу просто скопировать и вставить этот код в приложение Windows Phone 7.1 (Mango), так как сетевой код немного отличается - например ... все выполняется асинхронно в WP7 и что-то вроде
myWebRequest.GetResponse()
больше не работает .. и мне нужно сделать что-то вроде
myWebRequest.BeginGetResponse()
Если у кого-нибудь есть какие-нибудь рабочие примеры кода, которые аутентифицируются с использованием auth форм в WP7 - это было бы здорово
Большое спасибо