同一解决方案中的 MVC 和 Web API 个项目
MVC and Web API Projects in the same Solution
我刚才创建了一个解决方案,其中包含一个 Web API 2 项目(向移动设备提供 JSON 数据)和一个 Class 库(包括我的数据访问服务) .
Web API 项目使用 Ninject 作为 DI,一切正常。
现在我需要为几个网页添加一个单独的 MVC 项目。 api 应该可以从 www.example.com/api/controller
访问,而网站应该可以通过 www.example.com/controller
.
访问
问题是这两个都有不同的 "Register" 方法和看似不兼容的路由集合。如果我将 MVC 项目设置为启动项目,api 的路由不会被注册,反之亦然。如果我设置 "Mutiple startup projects",它们会 运行 在不同的端口上,这不是我喜欢的。
如何将 MVC 项目设置为启动项目,同时为它们注册所有路由?
还有一件事。因为WebAPI项目创建的比较早,里面已经写好了Ninject配置。当然,新 MVC 项目中需要 Class Library 项目中的一些服务。我是否必须将 Ninject 配置移动到 MVC 项目,或者它们只是工作,因为它们在 Web API 项目启动时是 运行?
这 2 个项目彼此 独立 就像 2 个不同的 应用程序,即使它们在 相同的解决方案中。
要取得成功,您必须:
1) 将您的 MVC 项目部署到 www.example.com
(主 虚拟应用程序 )。
2) 将您的 WebAPI 项目部署到 www.example.com/api
(api 文件夹是 虚拟应用程序)。不要忘记从您的 WebAPI 路由中删除 api
(否则您必须使用此路由 www.example.com/api/api/controller
)。
这样做,您可以独立访问 同一个 url 中的两个项目。
对于NInject部分,您可以在MVC项目中重新注册服务。另一个解决方案(我推荐)是创建一个 class library 项目并在那里注册服务,然后你引用这个 class library 在两个项目中。
我喜欢做的是将 MVC 和 WebAPI 项目放在两个单独的项目 (separation of concerns) 中,但让它们共享相同的业务逻辑。
我喜欢使用命令和查询模式。因此所有命令和查询都位于另一个解决方案项目中,MVC 和 WebAPI 项目都可以访问该项目。
我在 www.domain.com
路径上部署 MVC 项目,在 api.domain.com
上部署 WebAPI 项目,并在 www
源的 WebAPI 上启用 CORS。
我刚才创建了一个解决方案,其中包含一个 Web API 2 项目(向移动设备提供 JSON 数据)和一个 Class 库(包括我的数据访问服务) .
Web API 项目使用 Ninject 作为 DI,一切正常。
现在我需要为几个网页添加一个单独的 MVC 项目。 api 应该可以从 www.example.com/api/controller
访问,而网站应该可以通过 www.example.com/controller
.
问题是这两个都有不同的 "Register" 方法和看似不兼容的路由集合。如果我将 MVC 项目设置为启动项目,api 的路由不会被注册,反之亦然。如果我设置 "Mutiple startup projects",它们会 运行 在不同的端口上,这不是我喜欢的。
如何将 MVC 项目设置为启动项目,同时为它们注册所有路由?
还有一件事。因为WebAPI项目创建的比较早,里面已经写好了Ninject配置。当然,新 MVC 项目中需要 Class Library 项目中的一些服务。我是否必须将 Ninject 配置移动到 MVC 项目,或者它们只是工作,因为它们在 Web API 项目启动时是 运行?
这 2 个项目彼此 独立 就像 2 个不同的 应用程序,即使它们在 相同的解决方案中。
要取得成功,您必须:
1) 将您的 MVC 项目部署到 www.example.com
(主 虚拟应用程序 )。
2) 将您的 WebAPI 项目部署到 www.example.com/api
(api 文件夹是 虚拟应用程序)。不要忘记从您的 WebAPI 路由中删除 api
(否则您必须使用此路由 www.example.com/api/api/controller
)。
这样做,您可以独立访问 同一个 url 中的两个项目。
对于NInject部分,您可以在MVC项目中重新注册服务。另一个解决方案(我推荐)是创建一个 class library 项目并在那里注册服务,然后你引用这个 class library 在两个项目中。
我喜欢做的是将 MVC 和 WebAPI 项目放在两个单独的项目 (separation of concerns) 中,但让它们共享相同的业务逻辑。
我喜欢使用命令和查询模式。因此所有命令和查询都位于另一个解决方案项目中,MVC 和 WebAPI 项目都可以访问该项目。
我在 www.domain.com
路径上部署 MVC 项目,在 api.domain.com
上部署 WebAPI 项目,并在 www
源的 WebAPI 上启用 CORS。