Где Request.CreateErrorResponse?
Я видел это в этом сообщении в блоге, но на самом деле это не говорит о том, как "включить" его. Похоже, что по умолчанию он не включен.
Я знаю это метод расширения, как определено здесь: http://msdn.microsoft.com/en-us/library/hh835786(v=vs.108).aspx, но как мне получить к нему доступ? Если я наберу Request.CreateErrorResponse
, тогда компилятор не узнает его.
Я уже using System.Net.Http
.
Ответы
Ответ 1
Вы все еще используете предварительную версию или версию? Было несколько расширений, которые не появлялись только до релиза и не существовали в более ранних версиях выпуска webapi. Я не уверен, что это был один из них, но это может быть причиной вашей проблемы.
Ответ 2
Я заметил это и в версии выпуска. И если у вас нет правильного использования инструкции, это будет ошибкой. Вам нужно:
using System.Net.Http;
даже если у вас уже есть это:
using System.Web.Http.Controllers;
Ответ 3
Запрос является публичным свойством класса ApiController и должен быть доступен вам в любых действиях API в этом контроллере.
public abstract class ApiController
{
...
public HttpRequestMessage Request { get; set; }
}
Вот небольшой пример кода, который работает для меня:
using System.Net;
using System.Net.Http;
using System.Web.Http;
public class MyFirstApiController : ApiController
{
// GET
public HttpResponseMessage Get(int id)
{
return Request.CreateErrorResponse(HttpStatusCode.ExpectationFailed, "Some message here");
}
}
Интересно, если я заберу с помощью System.Net.Http; statement, Request больше не имеет метода CreateErrorResponse().
Ответ 4
Попробуйте следующее:
using System.Net.Http;
даже если у вас уже есть это:
using System.Web.Http.Controllers;
Это сработало для меня.
Ответ 5
Ответы на важные вопросы.
Еще одна невероятная возможность заключается в том, что вы выбрали неправильный тип контроллера.
Убедитесь, что вы создали контроллер веб-API, если вы не используете MVC-контроллер,
Request.CreateErrorResponse()
Еще одна возможность, где вы можете найти эту проблему.
Ответ 6
Используйте System.Web.Http сборку.
source: Метод CreateErrorResponse
Ответ 7
Мое лучшее предположение, что это третья сборка, на которую вы не ссылались, это проблема.
К сожалению, у меня нет доступа к моему компьютеру, просматриванию на моем телефоне, поэтому я не могу отследить файл для вас. Согласно документам, он должен быть в System.Web.Http.SelfHost.dll, поэтому, я думаю, вы могли бы просто найти этот файл, чтобы найти его.