Я использую пользовательский oauth в веб-API для аутентификации. Теперь я хочу вызвать метод web api из контроллера MVC. Web метод API:Вызов web api C#, передавая маркер oauth вместе с параметром
public class UserController : ApiController
{
[Authorize(Roles = "Admin")]
[HttpPost]
[ActionName("UserById")]
public IEnumerable GetUserById(string idValue)
{
long ID = idValue != "" ? Convert.ToInt64(idValue) : -1;
using (var db = new DataModelContext())
{
IEnumerable query = (from b in db.User.Include(u => u.EmailAddresses).ToList()
where b.Id == ID
select new { b.Id, UserName = b.UserName, b.EmailAddresses }).ToList();
return query;
}
}
}
MVC контроллер:
public class PagesController : Controller
{
public ActionResult GetUserById(long id)
{
string baseUrl = Common.GetAPIUrl();
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.BaseAddress = new Uri(baseUrl);
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Common.GetoAuth().access_token);
var values = new JObject();
values.Add("idValue",id.ToString());
HttpContent content = new StringContent(values.ToString(), Encoding.UTF8, "application/json");
HttpResponseMessage response = client.PostAsJsonAsync(baseUrl + "/api/User/UserById", content).Result;
string resultJSON = response.Content.ReadAsStringAsync().Result;
return View("UserDetail",resultJson);
}
}
Некоторые, как ее не работает, я не в состоянии исправить проблему, почему он не работает. Когда я вызываю прямой URL API от почтальона, он работает нормально. например http://localhost:55362/api/UserById/2 или http://localhost:55362/api/UserById?idvalue=2. он не работает только для вызова httpclient.
Пожалуйста, объясните, что вы подразумеваете под «не работает». Что происходит? Выбрасывает исключение? Если да, то просьба сообщить подробности, –
НЕТ, если это не исключение. Его возвращающее это сообщение: Не найден ресурс HTTP, соответствующий запросу URI 'http: // localhost: 49963/api/User/UserById На контроллере' Пользователь 'не найдено никаких действий, которые бы соответствовали имени' UserById ' –