1

我有简单的web API项目(ASP.NET MVC)。我需要将我的项目部署在IIS上的子文件夹中。例如,我有该网站http://TestSite /我需要将该项目部署到http://TestSite/MyProject/。当我这样做时,web API路由停止工作。因为我的ajax呼叫路由到主站点 - http://TestSite/api/something/getWeb api项目路由问题

我曾尝试在接下来的方式来更新地图路由:

routeTemplate: "MyProject/api/{controller}/{id}", 

但这并不影响我想。我做错了什么,我可以在哪里阅读有关ASP.NET MVC中的Web API控制路由的一些练习?

+1

你的子文件夹中是否有web.config来覆盖默认的web.config?您可能还需要使用部分。 inheritInChildApplications =“false”> – AardVark71 2013-04-24 09:00:33

+0

是的,我有。感谢关于“本地”部分的说明。 – RredCat 2013-04-24 09:52:40

回答

2

这很简单。我不需要对路由做任何事情。我只需要在JavaScript中更改网址。

来源:

$.getJSON('/api/Category', function (data) { 

要:

$.getJSON('api/Category', function (data) { 

只是删除之前 'API' '/' 符号。意识到。

BTW,有关调试的ASP.NET Web API很好的文章 - Debugging ASP.NET Web API with Route Debugger

编辑:忘了我之前(而不是BTW部分)中写道。这不起作用。它适用于http://TestSite/MyProject/,但不适用于http://TestSite/MyProject/MyController/Index。我在过去的ASP.NET MVC项目中遇到过这样的问题。我通过开始使用Url helper解决了这个问题,例如:@Url.Action("MyAction","MyController")。所以我需要类似于Web Api的东西。我发现它。这是UrlHelper.HttpRouteUrl方法。现在我的代码看起来在未来的方式:

$.getJSON("@Url.HttpRouteUrl("DefaultApi",new {controller = "Category"})", function (data) { 

其中:

  • DefaultApi - 我的默认死记硬背的名称。
  • 类别 - 我的api控制器的名称。

该解决方案看起来不够优雅,但它的工作原理。

+1

用于指向WebApi调试文章的指针 – 2013-07-25 21:23:40