Web api项目路由故障

时间:2013-04-24 05:59:54

标签: c# asp.net-web-api routing asp.net-mvc-routing asp.net-web-api-routing

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

我试图以下一种方式更新地图路由:

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

但它不会影响我想要的。我做错了什么,我在哪里可以阅读ASP.NET MVC中的一些Web API控制路由实践?

1 个答案:

答案 0 :(得分: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控制器的名称。

此解决方案看起来并不优雅,但确实有效。