如何为ASP.NET MVC 4和ASP.NET Web API实现单独的项目

时间:2012-10-15 15:28:22

标签: javascript jquery asp.net-mvc asp.net-web-api

我正在开发一个大型ASP.NET MVC / Web API项目,并希望将控制器分离到他们自己的项目中(如本文http://msdn.microsoft.com/en-us/magazine/jj190803.aspx中所述)。不同之处在于我需要分离ASP.NET Web API控制器,而不是“普通”MVC控制器。

在我的解决方案中,我有两个独立的项目:

  • 一个用于提供HTML / CSS / JavaScript的ASP.NET MVC 4项目(注意 我没有使用任何标准的MVC控制器,这个项目就是全部 客户端/浏览器端代码,它对Web API进行jQuery / Ajax调用)
  • 一个ASP.NET Web API项目(这个项目只是 ApiController(s),没有视图,HTML等,我仍然想要Web API 项目将在IIS中托管,而非自托管)

无论如何,我已经看过其他帖子,这些帖子并没有真正解释我的确切情况,而且我无法解决这个问题。

如何将我的Web API控制器分解为他们自己的单独项目,并在我单独的MVC项目中使用我的HTML / JavaScript代码?而且,如何在单独的MVC项目中从我的JavaScript / jQuery代码调用API的端点?

感谢。

2 个答案:

答案 0 :(得分:1)

由于您的Web Api和MVC位于不同的项目中,并且它们可能会在不同的域中运行,因为跨域问题导致客户端的通信变得困难。

虽然你可以尝试JSONP或CORS,但它们不会有用(一个是黑客,另一个在浏览器中没有得到广泛支持),所以你必须在你的MVC项目中创建包装MVC控制器通过HttpClient课程到Web Api。

您的javascript将调用您的MVC控制器,这样您就可以避免跨域问题。

答案 1 :(得分:0)

您可以将API控制器分成另一个项目,这很好。只需确保您已引用所有必需的程序集。我建议看看Nuget包装,以确保你拥有它们。
对于api和web分离,请使用我认为的正确路由。检查MVC项目的App_Start文件夹中的“WebApiConfig.cs”。 API路由在开始时基本上具有“API / ...”,因此它不会弄乱你的mvc网站。 所以最后你会得到这样的东西:

 http://localhost/products
 http://localhost/api/products

mvc网站上的第一个流程请求,WebApi上的第二个流程请求。