C# Web api项目路由问题

C# Web api项目路由问题,c#,asp.net-web-api,routing,asp.net-mvc-routing,asp.net-web-api-routing,C#,Asp.net Web Api,Routing,Asp.net Mvc Routing,Asp.net Web Api Routing,我有一个简单的WebAPI项目(ASP.NETMVC)。我需要在IIS上的子文件夹中部署我的项目。例如,我有一个网站http://TestSite/我需要将项目部署到http://TestSite/MyProject/。当我这样做时,WebAPI路由停止工作。因为我的ajax调用被路由到主站点-http://TestSite/api/something/get 我已尝试以下一种方式更新地图路由: routeTemplate: "MyProject/api/{controller}/{id}",

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

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

routeTemplate: "MyProject/api/{controller}/{id}",
$.getJSON( "@Url.HttpRouteUrl("DefaultApi",new {controller = "Category"})", function (data) {

但这并不是我想要的。在ASP.NET MVC中,我做错了什么?我在哪里可以阅读有关web API控件路由的一些实践?

非常简单。我不需要对路由做任何事情。我只需要在JavaScript中更改url

发件人:

致:

只需删除“api”之前的“/”符号。注意

顺便说一句,关于调试ASP.NET Web API的文章不错-

编辑:忘记我以前写过(而不是BTW部分)。这不管用。它适用于
http://TestSite/MyProject/
但不适用于
http://TestSite/MyProject/MyController/Index
。我在过去的ASP.NETMVC项目中遇到了这样的问题。我开始使用例如:
@Url.Action(“MyAction”、“MyController”)
解决了这个问题。所以我需要类似于WebAPI的东西。我找到了。这是一种方法。现在,我的代码以下一种方式显示:

routeTemplate: "MyProject/api/{controller}/{id}",
$.getJSON( "@Url.HttpRouteUrl("DefaultApi",new {controller = "Category"})", function (data) {
其中:

  • DefaultApi—默认死记硬背的名称
  • Category—我的api控制器的名称

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

您的子文件夹中是否有一个web.config来覆盖默认的web.config?您可能还需要用Yes,I have来包装默认的web配置和部分。感谢您对“本地”部分的关注。