Я работаю на MVC5, где у меня есть веб-контроллер Api, который возвращает данные и код, как показано нижеПотребляя IHttpActionResult от контроллера MVC
[Route("m/api/Group")]
[HttpGet]
public IHttpActionResult ListOfGroups()
{
try
{
var listOfGroups = GroupExecutor.GetListOfGroups();
return Ok(listOfGroups);
}
catch (Exception ex)
{
LogClass.Logger.Error(ex.Message, ex);
return InternalServerError();
}
}
Если я запускаю этот адрес в Брауэр, его правильно возвращает данные в формате JSON ,
Теперь я хочу потреблять этот метод контроллера API в рамках того же проекта с помощью контроллера MVC и код, как показано ниже
[HttpPost]
[ValidateAntiForgeryHeader]
public ActionResult GetListOfGroups()
{
try
{
var listofGroups = new GroupController().ListOfGroups();
return GetJsonContentResult(listofGroups);
}
catch (Exception ex)
{
LogClass.Logger.Error(ex.Message, ex);
return new HttpStatusCodeResult(HttpStatusCode.InternalServerError, Utility.GetDescriptionFromEnumValue(Helper.TypeOfError.ErrorOccuredWhileProcessingRequest));
}
}
Теперь Когда я запускаю этот код идет в методе апи, но когда вернулся обратно в контроллер, его дает ошибку
Error getting value from 'Content Negotiation' on 'System.Web.Http.Results.OkNegotiatedContentResult
Как я могу решить эту проблему?
EDIT:
public ContentResult GetJsonContentResult(object data)
{
var camelCaseFormatter = new JsonSerializerSettings();
camelCaseFormatter.ContractResolver = new CamelCasePropertyNamesContractResolver();
var jsonResult = new ContentResult
{
Content = JsonConvert.SerializeObject(data, camelCaseFormatter),
ContentType = "application/json"
};
return jsonResult;
}
Я не понимаю, почему вам нужно вызвать метод web api, как это в вашем контроллере? – dotnetstep
Потому что его функция в MVC5 вызывать напрямую API-контроллер .. нет необходимости создавать клиента – Mahajan344
, что делает ваш метод GetJsonContentResult? – dotnetstep