Javascript 如何为ASP.NET MVC 4和ASP.NET Web API实现单独的项目
我正在从事一个大型ASP.NETMVC/WebAPI项目,希望将控制器分离到它们自己的项目中(如本文所述)。区别在于我需要分离ASP.NET Web API控制器,而不是“普通”MVC控制器 在我的解决方案中,我有两个独立的项目:Javascript 如何为ASP.NET MVC 4和ASP.NET Web API实现单独的项目,javascript,jquery,asp.net-mvc,asp.net-web-api,Javascript,Jquery,Asp.net Mvc,Asp.net Web Api,我正在从事一个大型ASP.NETMVC/WebAPI项目,希望将控制器分离到它们自己的项目中(如本文所述)。区别在于我需要分离ASP.NET Web API控制器,而不是“普通”MVC控制器 在我的解决方案中,我有两个独立的项目: 一个ASP.NETMVC4项目,用于提供HTML/CSS/JavaScript(注 我没有使用任何标准的MVC控制器,这个项目就是全部 对Web API进行jQuery/Ajax调用的客户端/浏览器端代码) 一个ASP.NET Web API项目(此项目仅为 Api
- 一个ASP.NETMVC4项目,用于提供HTML/CSS/JavaScript(注 我没有使用任何标准的MVC控制器,这个项目就是全部 对Web API进行jQuery/Ajax调用的客户端/浏览器端代码)
- 一个ASP.NET Web API项目(此项目仅为 ApiController,没有视图,HTML等等,我仍然想要webapi 项目将托管在IIS中,而不是自托管)
谢谢。您可以将API控制器分离到另一个项目中,这很好。只需确保已引用所有必需的程序集。我建议您查看Nuget软件包,以确保您拥有所有这些软件包。
对于api和web分离,我只想使用正确的路由。在MVC项目的App_Start文件夹中选中“WebApiConfig.cs”。API路由在开始时基本上是“API/…”,所以它不会给mvc站点带来麻烦。 最后你会得到这样的结果:
http://localhost/products
http://localhost/api/products
第一个在mvc站点处理请求,第二个在WebApi。因为您的Web Api和mvc在不同的项目中,可能会在不同的域中运行,因此由于跨域问题,客户端的沟通不会太困难 虽然您可以尝试JSONP或CORS,但它们没有多大用处(一个是黑客,另一个在浏览器中不受广泛支持),因此您必须在MVC项目中创建包装器MVC控制器,该控制器将通过
HttpClient
类与Web Api进行通信
javascript将调用MVC控制器,这样可以避免跨域问题。谢谢Mark。你说的很有道理。跨域问题可能是我无法让它在我的原型中工作的原因——也就是说,我的MVC项目正在使用,我的Web API项目正在使用,而使用URL为的jQuery.ajax,我无法将Web API项目中的JSON值导入MVC项目(这给了我一个错误:XMLHttpRequest无法加载。访问控制不允许使用Origin允许Origin。)。也许我会放弃将MVC和Web API项目分开的想法,因为我不知道如何在MVC控制器周围编写包装器,然后从中调用Web API项目。查看此帖子。如果Web API仅从MVC项目中使用,而不是从任何地方使用,则可以通过这种方式将它们包含在MVC项目本身中,这样可以避免交叉使用-域问题。再次感谢Mark。我不得不将注意力和精力转移到另一个项目,因此我无法实施您的建议(包括您提供的链接)。看来你的建议可以解决我的问题。谢谢。@Imttag我在这里就这个主题写了一篇小帖子。你可能会喜欢。谢谢Jaroslav提供的信息。正如我对Mark的评论所表明的,我不知道如何使它起作用(我不知道我是否有足够的时间来解决和实施它)。