调用此方法:
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;
}
Run Code Online (Sandbox Code Playgroud)
导致编译时错误:
'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.
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?
dan*_*wig 24
运行时类型item可能不是实例Product.你应该能够做到这一点:
var response = Request.CreateResponse(HttpStatusCode.Created, item);
Run Code Online (Sandbox Code Playgroud)
即使item是一个实例Product,泛型<Product>参数也是多余的,没有必要.如果您使用ReSharper,它会告诉您"(通用)类型参数规范是多余的".
更新
你的班级是延伸Controller还是ApiController?错误应该是'System.Net.Http.HttpRequestMessage' does not contain a definition for...,而不是'System.Web.HttpRequestBase' does not contain a definition for....
WebApi控制器应该从而ApiController不是扩展Controller.在MVC控制器中,this.Request指向的实例System.Web.HttpRequestBase.在WebAPI控制器中,this.Request指向的实例System.Net.Http.HttpRequestMessage.
Kar*_*ang 18
CreateResponse是在System.Net.Http命名空间中定义的扩展方法.请务必添加一个引用System.Net.Http,并System.Net.Http.Formatting在你的项目,并添加using指令正确:
C#:
using System.Net.Http;
VB:
Import System.Net.Http
| 归档时间: |
|
| 查看次数: |
23012 次 |
| 最近记录: |