2015-03-16 3 views
1

EDIT: внизу.C# WebClient FormsAuthentication

У меня есть сайт, который использует WebService. Аутентификация разрешается следующим образом: «How to: Implement Simple Forms Authentication».

У меня есть приложение WinForms, которое не может подключиться к WebService (потому что для этого требуется аутентификация). Есть пример, как выполнить эту аутентификацию между WebService и WinForms? Я слышал о System.Net.HttpWebRequest, но я не нашел примера, чтобы использовать его.

class CookieWebClient : WebClient 
{ 
     public CookieContainer CookieContainer { get; private set; } 

     /// <summary> 
     /// This will instanciate an internal CookieContainer. 
     /// </summary> 
     public CookieWebClient() 
     { 
      this.CookieContainer = new CookieContainer(); 
     } 

     /// <summary> 
     /// Use this if you want to control the CookieContainer outside this class. 
     /// </summary> 
     public CookieWebClient(CookieContainer cookieContainer) 
     { 
      this.CookieContainer = cookieContainer; 
     } 

     protected override WebRequest GetWebRequest(Uri address) 
     { 
      var request = base.GetWebRequest(address) as HttpWebRequest; 
      if (request == null) return base.GetWebRequest(address); 
      request.CookieContainer = CookieContainer; 
      return request; 
     } 
} 

и когда я хочу, чтобы проверить подлинность себя:

using (var client = new CookieWebClient()) 
{ 
    var values = new NameValueCollection 
    { 
     { "UserEmail.Text", "Administrator" }, 
     { "UserPass.Text", "admin" }, 
    }; 
    client.UploadValues("http://localhost:54787/logon.aspx", values); 

    // If the previous call succeeded we now have a valid authentication cookie 
    // so we could download the protected page 
    string result = client.DownloadString("http://localhost:54787/MyWantedPage.aspx"); 
} 

Проблема заключается в том, может быть, что я не правильно поставить пользователя и пароль (Администратор/администратора) в правом поле на Logon.aspx ... (UserMail и UserPass).

Что вы делаете? (конечно, я предполагаю, что проще использовать класс WebClient ..) (Если я действительно получил его, NetworkCredentials доступен только с проверкой подлинности Windows и Basic Authenticaiton isnt? Я на своей стороне, FormsAuthentication - тот же самый в URL-адресе I дал)

EDIT:

ОК, я видел здесь:

http://odetocode.com/articles/162.aspx

И так, я также пытался выполнить HTTPWebRequest видел его на этой странице.

Я получаю эту ошибку при закрытии ответ:

webRequest.GetResponse().Close(); 

ошибка находится ниже:

System.Net.WebException: Le serveur distant a retourné une erreur : (500) Erreur interne du serveur. 

à System.Net.HttpWebRequest.GetResponse()

Видимо есть на самом деле проблема с моим запросом POST WebClient и моим HTTPWebRequest, может быть что-то настроить на сервере IIS?

Еще раз спасибо сообществу!

+0

Итак, вы уже пробовали отправить HttpWebRequest? Вы пытались добавить NetworkCredentials в свой ресурс Credentials? – cubrr

+0

@GrawCube Я устал от этого: (см. EDIT) – FrenchyBoss

+0

ok, есть ли у кого-нибудь ответ? : D – FrenchyBoss

ответ

0

ОК, я действительно не нахожу ответа об этом.

Как я это делаю: защищайте все веб-страницы с помощью проверки подлинности с помощью форм. Но не защищайте Служение, которое я буду потреблять ... (потому что да, это было целью всего этого!)

Большое спасибо всем вам.