CreateResponse method in asp.net Web API

前端 未结 2 1771
清酒与你
清酒与你 2020-12-31 07:04

calling this method:

public HttpResponseMessage PostProduct(Product item)
{
    item = repository.Add(item);
    var response = this.Request.CreateResponse&l         


        
相关标签:
2条回答
  • 2020-12-31 07:27

    The runtime type of item is probably not an instance of Product. You should be able to do this:

    var response = Request.CreateResponse(HttpStatusCode.Created, item);
    

    Even if item was an instance of Product, the generic <Product> argument is redundant and not necessary. If you used ReSharper, it would tell you that the "(Generic) Type argument specification is redundant".

    Update

    Does your class extend from Controller or ApiController? The error should be 'System.Net.Http.HttpRequestMessage' does not contain a definition for..., not 'System.Web.HttpRequestBase' does not contain a definition for....

    WebApi controllers should extend from ApiController, not Controller. In an MVC controller, this.Request points to an instance of System.Web.HttpRequestBase. In a WebAPI controller, this.Request points to an instance of System.Net.Http.HttpRequestMessage.

    0 讨论(0)
  • 2020-12-31 07:33

    CreateResponse is an extension method defined in System.Net.Http namespace. Make sure to add a reference to System.Net.Http and System.Net.Http.Formatting in your project and add a correct using directive:

    C#:
    using System.Net.Http;

    VB:
    Import System.Net.Http

    0 讨论(0)
提交回复
热议问题