WebAPI和表单身份验证CookieContainer

时间:2013-04-26 21:21:21

标签: c# asp.net-mvc asp.net-mvc-4 asp.net-web-api restsharp

我成功登录 MVC 4 Web API 网站并以这种方式获取。 ASPXAUTH Set-Cookie:

    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);
    }

如您所见,我将 CookieContainer 传递给ProcessData()函数,然后处理位于[AUTHORIZE]控制器后面的 RESTful 命令。

ProcessData()调用失败,出现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");
        }
    }

1 个答案:

答案 0 :(得分:0)

原来我只需要用 IISRESET 重置服务器。它也许处于糟糕的状态。

完成上述操作后,上述代码在Android设备上运行完美