2016-08-16 140 views
0

我正在学习ASP.NET MVC 5(Visual Studio 2015)并创建了一个基本的MVC Web应用程序。当我创建项目时,我在“为以下内容添加文件夹和核心参考”下选择了“MVC”和“Web API”。我还在身份验证下选择了“个人用户帐户”。我使用EF创建了一些模型,控制器和视图。这些与认证一起工作良好。我还创建了一个“使用实体框架的操作的Web API 2控制器”,以将API功能添加到我的一个模型中。这再次工作正常。MVC 5 Web应用程序和Web API之间的共享

现在我试图让OAuth使用Web API,但在请求令牌时遇到了问题......我不认为Web应用程序模板随附该部分。经过大量阅读,我发现了一些堆栈溢出的建议,通常为您的Web API创建一个单独的项目更好。

所以我的问题是:

我将最有可能被一台服务器和/或子域而在另一个Web应用程序上部署Web API。如果是这样的话,他们必须在单独的项目中,对吧?

当有两个项目时,共享通用组件的最佳方式是什么?在我的Web API中,是否应该添加对我的Web应用程序的引用,然后创建Web API控制器,或者应该从模型中复制代码并在Web API中创建新模型?

回答

1

回答您的问题:

  1. 是的,他们需要的是独立的项目,如果你要他们seperately部署。
  2. 要处理常见项目,请创建库DLL项目并从Web API和Web App中引用该项目。它可以包含通用组件。

此外,如果您使用Cookie进行身份验证,您还需要设置CORS以允许在具有不同域的两个站点之间共享Cookie。

+0

因此,我会在我的解决方案中创建一个新的类库项目,创建模型,然后在Web API和Web应用程序中添加对该项目的引用,然后为其构建控制器?您能解释为什么这比在Web应用程序中构建模型然后在Web API中引用它更好吗?对于身份验证,我只使用模板中的默认设置,Web应用程序无需与Web API进行通信。 – user1624184

+0

通过将通用代码放入单独的位置,您基本上可以将通用代码与Web API和Web App解耦。这允许这些代码独立于这两种解决方案进行测试。另外,它确保Web API项目永远不会与Web App项目发生冲突。 –

相关问题