2013-04-26 134 views
0

我成功登录到MVC 4 Web API网站并获得一个。 ASPXAUTH的Set-Cookie是这样的:WebAPI和表单身份验证CookieContainer

private void Login() 
    { 
     var client = new RestClient("http://QQQQ/MobileAPI"); 
     client.CookieContainer = new CookieContainer(); 
     var request = new RestRequest {Resource = "/api/account/Logon", Method = Method.POST}; 
     request.AddObject(new {Username = "john", Password = "secret"}); 

     var responseLogin = client.Execute(request); 
     if (responseLogin.StatusCode == HttpStatusCode.OK) 
      ProcessData(client.CookieContainer); 
    } 

正如你可以看到我通过的CookieContainerProcessData()功能,然后处理的RESTful命令,坐在后面的[AUTHORIZE]控制器。

的过程数据()调用失败并HttpStatusCode.Unauthorized

问:我认为我没有正确发送的验证?

private void ProcessData(CookieContainer cookieJar) 
    { 
     var client = new RestClient("QQQQQ/MobileAPI"); 
     client.CookieContainer = cookieJar; 
     var request = new RestRequest {Resource = "/api/values/5", Method = Method.GET}; 

     var responseForUser = client.ExecuteAsGet<AppUser>(request, "GET"); 

     if (responseForUser.StatusCode == HttpStatusCode.OK) 
     { 
      AppUser app = responseForUser.Data; 
      Console.WriteLine(app.CUSAName); 
     } 

     if (responseForUser.StatusCode == HttpStatusCode.Unauthorized) 
     { 
      Console.WriteLine("FAILED"); 
     } 
    } 
+0

你的第二个电话是否发送cookie? – leastprivilege 2013-04-27 06:59:09

+0

API控制器的工作方式与Http Controller不同,我怀疑授权属性可以与API控制器一起使用。您将必须检查API控制器的生命周期。 – 2013-04-27 07:06:21

回答

0

原来我刚刚到服务器IISRESET复位。它可能处于一个糟糕的状态。

一旦我这样做,上述代码在Android设备上完美工作