6

我正在开发一个大型 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 的端点?

谢谢。

4

2 回答 2

1

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

虽然您可以尝试 JSONP 或 CORS,但它们不会有太大用处(一种是 hack,另一种在浏览器中不受广泛支持),因此您必须在 MVC 项目中创建与 Web 对话的包装 MVC 控制器Api 通过HttpClient类。

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

于 2012-10-15T16:59:15.720 回答
0

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

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

第一个在 mvc 站点处理请求,第二个在 WebApi。

于 2012-10-15T16:01:49.647 回答