Подтвердить что ты не робот

Где Request.CreateErrorResponse?

Я видел это в этом сообщении в блоге, но на самом деле это не говорит о том, как "включить" его. Похоже, что по умолчанию он не включен.

Я знаю это метод расширения, как определено здесь: http://msdn.microsoft.com/en-us/library/hh835786(v=vs.108).aspx, но как мне получить к нему доступ? Если я наберу Request.CreateErrorResponse, тогда компилятор не узнает его.

Я уже using System.Net.Http.

4b9b3361

Ответ 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()

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

Ответ 7

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

К сожалению, у меня нет доступа к моему компьютеру, просматриванию на моем телефоне, поэтому я не могу отследить файл для вас. Согласно документам, он должен быть в System.Web.Http.SelfHost.dll, поэтому, я думаю, вы могли бы просто найти этот файл, чтобы найти его.