I am implementing RESTful services(asp.net web api 2.0) to perform authentication in Webforms.From my client end(Webforms) i am generating a token and sending it for validation in serverside(Webapi controller).
Webform codeBehind file:
static async Task RunAsync(string token)
{
HttpClientHandler handler = new HttpClientHandler();
handler.UseDefaultCredentials = true;
//HttpClient Provides a base class for sending HTTP requests and receiving HTTP responses from a resource identified by a URI.
using (var client = new HttpClient(handler))
{
client.BaseAddress = new Uri("http://localhost:32253/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("Authorization-Token", token);
string uri = "api/UserDetail/Authenticate";
//The GetAsync method sends the HTTP GET request; The await keyword suspends execution until the asynchronous method completes
HttpResponseMessage response = await client.GetAsync(uri);
if (response.IsSuccessStatusCode)
{
//Use ReadAsAsync to deserialize the JSON. The ReadAsync method is asynchronous because the response body can be arbitrarily large.
ValidateUserStatus success = await response.Content.ReadAsAsync<ValidateUserStatus>();
result = "Success";
}
}
Serverside Method:
[System.Web.Http.AcceptVerbs("GET")]
[System.Web.Http.HttpGet]
[ActionName("Authenticate")]
public SLS.MDS.Web.Entities.Enums.ValidateUserStatus Validate()
{
var token = Request.Headers.GetValues("Authorization-Token").First();
//string decryptedData = RSAClass.Decrypt(token);
var comparetoken = HMACSHA256Class.Hash(username, password, data);
string[] credentials = data.Split(',');
SLS.MDS.Web.Entities.Enums.ValidateUserStatus status = SLS.MDS.Web.Entities.Enums.ValidateUserStatus.NotSet;
if (token == comparetoken)
{
if (credentials != null)
{
status = MDSProvider.DefaultInstance.ValidateIDSUser(credentials[0], credentials[1]);
}
}
return status;
}
The validation in serverside is successful and returns status.The issue i am facing is that i am unable to receive it in client end(Webform). In line ,
HttpResponseMessage response = await client.GetAsync(uri);
The httprequest goes to serverside and returns status but not able to receive it.What would be the reason ? Can someone help me out?