我正在开发一个大型ASP.NET MVC / Web API项目,并希望将控制器分离到他们自己的项目中(如本文http://msdn.microsoft.com/en-us/magazine/jj190803.aspx中所述)。不同之处在于我需要分离ASP.NET Web API控制器,而不是“普通”MVC控制器。
在我的解决方案中,我有两个独立的项目:
无论如何,我已经看过其他帖子,这些帖子并没有真正解释我的确切情况,而且我无法解决这个问题。
如何将我的Web API控制器分解为他们自己的单独项目,并在我单独的MVC项目中使用我的HTML / JavaScript代码?而且,如何在单独的MVC项目中从我的JavaScript / jQuery代码调用API的端点?
感谢。
答案 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上的第二个流程请求。