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