Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net web api asp.net Web API中的CreateResponse方法_Asp.net Web Api - Fatal编程技术网

Asp.net web api asp.net Web API中的CreateResponse方法

Asp.net web api asp.net Web API中的CreateResponse方法,asp.net-web-api,Asp.net Web Api,调用此方法: public HttpResponseMessage PostProduct(Product item) { item = repository.Add(item); var response = this.Request.CreateResponse<Product>CreateResponse(HttpStatusCode.Created, item); string uri = Url.RouteUrl("DefaultApi", new

调用此方法:

public HttpResponseMessage PostProduct(Product item)
{
    item = repository.Add(item);
    var response = this.Request.CreateResponse<Product>CreateResponse(HttpStatusCode.Created, item);

    string uri = Url.RouteUrl("DefaultApi", new { id = item.Id });
    response.Headers.Location = new Uri(uri);
    return response;
}
公共HttpResponseMessage后期产品(产品项)
{
item=存储库。添加(item);
var response=this.Request.CreateResponseCreateResponse(HttpStatusCode.Created,item);
字符串uri=Url.RouteUrl(“DefaultApi”,新的{id=item.id});
response.Headers.Location=新Uri(Uri);
返回响应;
}
正在导致编译时错误:

'System.Web.HttpRequestBase' does not contain a definition for 'CreateResponse' and the
            best extension method overload 'System.Net.Http.HttpRequestMessageExtensions.CreateResponse<T>
(System.Net.Http.HttpRequestMessage, System.Net.HttpStatusCode, T)' has some invalid arguments.
“System.Web.HttpRequestBase”不包含“CreateResponse”和
最佳扩展方法重载'System.Net.Http.HttpRequestMessageExtensions.CreateResponse
(System.Net.Http.HttpRequestMessage,System.Net.HttpStatusCode,T)“”具有一些无效参数。

这里我缺少什么?

运行时类型的
可能不是
产品
的实例。您应该能够做到这一点:

var response = Request.CreateResponse(HttpStatusCode.Created, item);
即使
产品
的一个实例,通用的
参数也是多余的,也不是必需的。如果使用ReSharper,它会告诉您“(泛型)类型参数规范是冗余的”

更新

您的类是从
Controller
扩展还是从
ApiController
扩展?错误应该是,
'System.Net.Http.HttpRequestMessage'不包含…
的定义,而不是
'System.Web.HttpRequestBase'不包含…
的定义


WebApi控制器应该从
ApiController
扩展,而不是从
Controller
扩展。在MVC控制器中,
this.Request
指向
System.Web.HttpRequestBase
的实例。在WebAPI控制器中,
this.Request
指向
System.Net.Http.HttpRequestMessage

CreateResponse是在
System.Net.Http
命名空间中定义的扩展方法。 确保在项目中添加对
System.Net.Http
System.Net.Http.Formatting
的引用,并添加正确的using指令:

C#:
使用System.Net.Http

VB:

Import System.Net.Http

请同时包括类定义,例如,
public products控制器:ApiController{
好的。我想我知道了。类定义是:
public class products控制器:Controller
什么是.Net核心?