0

Я написал простую программу LightSwitch 2013, которая управляет «клиентами», добавляя объект клиента и позволяя LightSwitch обрабатывать прикрепленный файл SQL Server. LightSwitch предоставляет данные с успокоительной службы (ApplicationData.svc), который можно назвать так:LightSwitch 2013: вызов службы OData ApplicationData.svc с проверкой подлинности форм

https://somesite.azurewebsites.net/ApplicationData.svc/Customers 

Теперь я хочу добавить еще один Windows 8 Универсальный App клиентское приложение (магазин и телефон) , кроме «включенного» клиента HTML и Silverlight Desktop. Поэтому мне нужно запрограммировать обратный сервис.

Я борюсь там с формами аутентификации, которые я включил. Поэтому я пытаюсь войти в систему программно по коду. Я точно не знаю, что происходит, я попытался проанализировать трафик на проводе со скрипачом. Я вижу, что есть страница «LogIn.aspx» (GET), после чего выполняется обратная передача с учетными данными, заполненными пользователем (POST).

Я всегда получаю ответ «401 - несанкционированный».

моя догадка выглядит следующим образом:

 var cookieContainer = new CookieContainer(); 
     var clientHandler = new HttpClientHandler { CookieContainer = cookieContainer }; 

     using (var client = new HttpClient(clientHandler)) 
     { 
      client.BaseAddress = new Uri("https://somesite.azurewebsites.net"); 

      // Get the login page 
      var loginGet = client.GetAsync("/LogIn.aspx").Result; 
      loginGet.EnsureSuccessStatusCode(); 

      // Post-back to login page with credentials 
      var loginPost = client.PostAsync("/LogIn.aspx", new FormUrlEncodedContent(new Dictionary<string, string> { 
       { "LoginUser$Username", "myname" }, 
       { "LoginUser$Password", "mypw"}, 
       { "LoginUser$LoginButton", "LOG+IN" }, 
      })).Result; 
      loginPost.EnsureSuccessStatusCode(); 

      // try to get the customers list via OData 
      client.DefaultRequestHeaders.Accept.Clear(); 
      client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

      // Getting a "401 - unauthorized" here: 
      var response = client.GetAsync("ApplicationData.svc/Customers").Result; 
      response.EnsureSuccessStatusCode(); 
     } 

Может кто-нибудь пнуть меня в правильном направлении?

PS: Я знаю, что если бы я написал .NET-клиент, я мог бы просто использовать класс Lightswitch.ApplicationData для беспрепятственного вызова успокоительной службы. Это решение предлагается здесь:

authenticate Lightswitch Odata service that uses forms authentication

Но в моем случае, у меня есть Windows 8 универсальное приложение, так что я не могу ссылаться на «сервер» сборки, порожденную LightSwitch, который базируется на платформе .NET выполнения.

ответ

0

Так что я, наконец нашел .... Я был совершенно неправильно, обращаясь вокруг с печеньем ....

LightSwitch OData службы с проверкой подлинности форм подвергаются с проверки подлинности.

https://usernamme:[email protected]/ApplicationData/Customers 

Убедитесь, что используете SSL, конечно!

См. Эту статью: Exposing LightSwitch Application Data

Смежные вопросы