我有简单的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控制路由实践?
答案 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) {
其中:
此解决方案看起来并不优雅,但确实有效。