所以我对Web API完全陌生,我想我会开始一个测试项目来学习它和AngularJS以及它们如何很好地协同工作......等等。
我在我的解决方案中创建了一个多层架构,在我的TPlan.API
项目中,我在Global.asax
GlobalConfiguration.Configuration.Routes.Add("default",
new HttpRoute("api/{controller}"));
TPlan.WEB
是我的MVC应用程序,它被设置为“启动项目”。当我运行它时,我希望能够去:
mysite的:端口/ API /测试
从我的测试控制器中获取API的值。
然而,它不适合我,我得到以下内容:
找不到与请求URI'mysite:port / api / test'匹配的HTTP资源。
答案 0 :(得分:5)
呃,在visual studio中,右键单击解决方案并转到属性。 转到启动并选择“多个项目”选项并勾选网站和Web服务以启动。
这将启动他们两个。但正如已经指出的那样,它们在不同的端口上运行,它们是完全独立的应用程序...... 我认为你不能注册属于网站之外的路线。
我们这样工作
查看=> POST / GET => MVC控制器=> HTTP请求=> API控制器
所以我们的mvc视图发布或者到我们的mvc控制器,然后我们发起一个单独的http请求到web api。这是服务器到服务器的调用,就像调用任何外部Web服务一样。我们等待来自api的响应,然后返回视图所需的任何内容......
答案 1 :(得分:2)
如果没有提前将IISAPI项目安装到IIS中,那么您在尝试的内容是不可能的,我确信这不是您想要的。两个项目都无法同时运行,因为只有一个项目能够启动IIS Express的调试会话。即使两个项目都能够同时运行,它们也会位于不同的逻辑端口上,并且必须将来自一个项目的路由手动发送到另一个实例的侦听端口。基本上,您的API项目中的Global.asax永远不会运行,因为该项目将构建为类库。
答案 2 :(得分:1)
使TPlan.API项目成为一个简单的程序集,从TPlan.Web引用它并将GlobalConfiguration.Configuration属性传递给API程序集中的Register方法。当MVC项目启动时,MVC路由和Web Api路由都将在同一个Web主机上处于活动状态。
Here是在同一解决方案中同时具有控制台主机和Web主机的API的示例。
答案 3 :(得分:-1)
请检查以下网站。我认为问题在于路线的配置
http://www.asp.net/web-api/overview/extensibility/configuring-aspnet-web-api