Всем доброго времени суток!
Есть сайт на ASP.NET в странице есть фрейм, который ссылается на WPF страничку XBAP на которой лежит кнопочка. XBAP лежит на том же сайте что и ASP.NET сайт. XBAP ясен перец выполняется на стороне клиента. При нажатии на кнопочку XBAP (который работает на стороне клиента) пытается с помощью WebService получить данные от ASP.NET Service который лежит там же где и сайт. Код выглядит вот так:
WSTestWebService.TestWebService srvc = new WSTestWebService.TestWebService();
//Пытаемся запихать в сервис кукесы
string cookieHeader2 = Application.GetCookie(new Uri("
http://mySite/myPage.aspx"));
string[] cookies = cookieHeader2.Split(new char[] { ';' });
srvc.CookieContainer = new CookieContainer();
if (cookies != null && cookies.Length > 0)
foreach (string s in cookies) {
string[] vals = s.Split(new char[] { '=' }, 2);
if (vals != null && vals.Length > 1) {
Cookie cook = new
Cookie(
vals[0].Replace(" ", null).Replace("\t", null).Replace("\r", null).Replace("\n", null).Replace("=", null).Replace(";", null).Replace(",", null),
vals[1].Replace(";", null).Replace(",", null));
MessageBox.Show(cook.Name + "-------" + cook.Value);
cook.Path = "/";
srvc.CookieContainer.Add(new Uri(srvc.Url), cook);
}
}
srvc.Credentials = CredentialCache.DefaultCredentials;
label1.Content = srvc.HelloWorld();
Проблема вот в чем: Клиент заходит на ASP.NET сайт, проходит авторизацию, открывает окошко с фреймом в котором лежит многострадальный XBAP, нажимает на кнопочку, XBAP обращается к сервису на сайт, но сайт думает что авторизация не пройдена и редиректит на страницу авторизации. Добрые люди сказали что нужно скопировать куки из канала ASP страницы в канал сервиса, я вроде скопировал (см. код выше), но толи так криво скопировал, толи еще что, сервер редиректит вызов метода из вебсервиса на страницу авторизации.
Веб сервис выглядит так:
using System.Web.Services;
/// <summary>
/// Summary description for TestWebService
/// </summary>
[WebService(Namespace = "
http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class TestWebService : WebService {
[WebMethod(Description = "Запрос данных", EnableSession = true)]
public string HelloWorld() {
return "Hello World";
}
}