混合web api控制器和站点控制器

ter*_*tyl 33 .net asp.net-mvc asp.net-web-api

我正在使用mvc 4 beta中的新wep api并在我现有的mvc网站上添加一些新的api控制器.问题是我无法将web api控制器命名为与现有控制器相同.现在我已经给了他们像ProductApiController这样的名字,但这并不是很像.将这些新控制器添加到现有mvc站点时,这些新控制器的名称是什么?

Dar*_*rov 54

问题是我无法将web api控制器命名为与现有控制器相同.

您可以让API控制器与现有控制器同名.只需将它们放在不同的命名空间中即可使编译器满意.

例:

namespace MyAppName.Controllers
{
    public class ProductsController: Controller
    {
        public ActionResult Index()
        {
            var products = productsRepository.GetProducts();
            return View(products);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

和API控制器:

namespace MyAppName.Controllers.Api
{
    public class ProductsController: ApiController
    {
        public IEnumerable<Product> Get()
        {
            return productsRepository.GetProducts();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你有:/products/api/products分别合作.

  • 或者也许web api的区域更合适? (2认同)
  • 仅供参考,我无法解决这个问题.当我使用jquery来"GET"`/ api/products`时,服务器返回一个301,其新位置位于`/ api/products /`,返回404.使用干净的新web api项目,我可以让它工作,但是一旦我开始添加来自nuget/solution的引用,它就会中断. (2认同)