gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 21:29:38 28 4
gpt4 key购买 nike

调用这个方法:

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;
}

导致编译时错误:
'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.

我在这里缺少什么?

最佳答案

item的运行时类型可能不是 Product 的实例.你应该能够做到这一点:

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

即使 itemProduct 的一个实例,通用 <Product>争论是多余的,没有必要。如果您使用 ReSharper,它会告诉您“(通用)类型参数规范是多余的”。

更新

您的类(class)是否从 Controller 扩展或 ApiController ?错误应该是 'System.Net.Http.HttpRequestMessage' does not contain a definition for... ,不是 'System.Web.HttpRequestBase' does not contain a definition for... .

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

关于asp.net-web-api - asp.net Web API 中的 CreateResponse 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13971390/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com