【发布时间】:2014-03-28 13:34:35
【问题描述】:
我正在使用 asp.net web api 2,请求无法定位和运行 IHttpActionResult 方法。我相信他们是我的路由问题。我得到的错误(http 500)响应是:“尝试创建类型的控制器时发生错误确保控制器具有无参数的公共构造函数。”
我发送的请求是:动词:GET localhost:xxxx/api/simpleproduct/getproduct?id=3
[RoutePrefix("api/simpleproduct")]
public class SimpleProductController : ApiController
{
List<Product> products = new List<Product>() { new Product { Id = 1, Name = "Demo1", Price = 1 }, new Product { Id = 2, Name = "Demo2", Price = 2 }, new Product { Id = 3, Name = "Demo3", Price = 3 } };
public SimpleProductController(List<Product> products)
{
this.products = products;
}
public IEnumerable<Product> GetAllProducts()
{
return products;
}
[Route("getproduct")]
[HttpGet]
public IHttpActionResult GetProduct(int id)
{
var product = products.FirstOrDefault((p) => p.Id == id);
if (product == null)
{
return NotFound();
}
return Ok(product);
}
public IHttpActionResult AddProduct(int Id, string Name, decimal Price)
{
if (Id == 0 || Name == null || Price == 0)
{
return Conflict();
}
products.Add(new Product { Id = Id, Name = Name, Price = Price });
return Ok(products);
}
public IHttpActionResult DeleteProduct(int Id)
{
if (Id < 0)
{
return Conflict();
}
var products2 = products.ToList();
foreach (var product2 in products2)
{
if (product2.Id == Id)
{
products.Remove(product2);
}
}
return Ok(products);
}
}
【问题讨论】:
-
您是否尝试添加无参数构造函数?
-
我也不确定你为什么要通过控制器传递产品,你应该只传递依赖项。
-
我试过了,但没用。你指的是addproduct吗?
标签: c# json http asp.net-web-api asp.net-web-api2