Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何为ASP.NET MVC 4和ASP.NET Web API实现单独的项目_Javascript_Jquery_Asp.net Mvc_Asp.net Web Api - Fatal编程技术网

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

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.NETMVC/WebAPI项目,希望将控制器分离到它们自己的项目中(如本文所述)。区别在于我需要分离ASP.NET Web API控制器,而不是“普通”MVC控制器

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

  • 一个ASP.NETMVC4项目,用于提供HTML/CSS/JavaScript(注 我没有使用任何标准的MVC控制器,这个项目就是全部 对Web API进行jQuery/Ajax调用的客户端/浏览器端代码)
  • 一个ASP.NET Web API项目(此项目仅为 ApiController,没有视图,HTML等等,我仍然想要webapi 项目将托管在IIS中,而不是自托管)
不管怎么说,我看到过其他帖子,这些帖子并没有真正解释我的具体情况,我很难让这个解决方案起作用

我如何将我的Web API控制器分解到它们各自的独立项目中,并从单独的MVC项目中的HTML/JavaScript代码中使用它们?另外,如何从单独的MVC项目中的JavaScript/jQuery代码调用API的端点


谢谢。

您可以将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的评论所表明的,我不知道如何使它起作用(我不知道我是否有足够的时间来解决和实施它)。