Каким должен быть тип возврата TokenEndPoint (из проекта WEBAPI), если он вызывается из отдельного проекта MVC? - PullRequest
0 голосов
/ 15 сентября 2018

Это из проекта WebAPI

public override Task TokenEndpoint(OAuthTokenEndpointContext context)
{
    foreach (KeyValuePair<string, string> property in context.Properties.Dictionary)
    {
        context.AdditionalResponseParameters.Add(property.Key, property.Value);
    }

    return Task.FromResult<object>(null);
}

Это из контроллера MVC

HttpResponseMessage response = httpClient.PostAsync("http://localhost:30760/Token", encodedRequest).Result;

У меня вопрос, возвращение return Task.FromResult<object>(null); дает пустую страницу в веб-браузере, НО мне нужен возврат в контроллер, в

HttpResponseMessage response= httpClient.PostAsync("http://localhost:30760/Token", encodedRequest).Result;

Так чего же мне не хватает, учитывая, что у меня есть имя пользователя и пароль, которые я не собираюсь здесь указывать, потому что это не проблема, я думаю.

Контроллер

    public class SupplierController : Controller
{
    string Baseurl = "http://localhost:30760/TryAPI";
    public async Task<ActionResult> Index()
    {

        using (var httpClient = new HttpClient())
        {
            var tokenRequest =
                new List<KeyValuePair<string, string>>
                    {
                    new KeyValuePair<string, string>("grant_type", "password"),
                    new KeyValuePair<string, string>("username","tested@gmail.com"),
                    new KeyValuePair<string, string>("password", "P@ssw0rd")
                    };

            HttpContent encodedRequest = new FormUrlEncodedContent(tokenRequest);

            HttpResponseMessage response = httpClient.PostAsync("http://localhost:30760/Token", encodedRequest).Result;
            var responseToken = response.Content.ReadAsStringAsync().Result;
            var convertedResponseToken = JsonConvert.DeserializeObject<List<string>>(responseToken);
            // Store token in ASP.NET Session State for later use
           // Session["ApiAccessToken"] = convertedResponseToken["AccessToken"];
        }

        List<string> EmpInfo = new List<string>();

        using (var client = new HttpClient())
        {
            //Passing service base url  
            client.BaseAddress = new Uri(Baseurl);

            client.DefaultRequestHeaders.Clear();
            //Define request data format  
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Session["ApiAccessToken"].ToString());


            //Sending request to find web api REST service resource GetAllEmployees using HttpClient  
            HttpResponseMessage Res = await client.GetAsync("api/values");

            //Checking the response is successful or not which is sent using HttpClient  
            if (Res.IsSuccessStatusCode)
            {
                //Storing the response details recieved from web api   
                var EmpResponse = Res.Content.ReadAsStringAsync().Result;

                //Deserializing the response recieved from web api and storing into the Employee list  
                EmpInfo = JsonConvert.DeserializeObject<List<string>>(EmpResponse);

            }
            //returning the employee list to view  
            return View(EmpInfo);
        }
    }
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...