这个Web API调用在dev中工作的任何原因,但在Win 2012上不起作用? “无法找到控制器...”错误

时间:2014-01-29 13:51:15

标签: asp.net-web-api asp.net-web-api-routing

我很难找到发生这种情况的原因。我的模块中有一个WebAPI服务。对公共入口点(默认路径)的特定调用在我的开发机器(Win7,IIS 7.5)上正常工作,但在生产服务器(Win2012,IIS8)上没有。 DNN安装是克隆。这是电话:

/DesktopModules/DNNEurope/LocalizationEditor/API?tabid=1&moduleid=4

Win2012安装回复“无法找到控制器...”,然后命名此控制器所在的路径和命名空间。注意路由 应该正常工作,因为它工作正常dev的。

这里有一个 quirk 需要注意。我通过查询字符串提供tabid和moduleid,而不是通过标题来提供json交换时的做法。那是因为这个电话应该在其他地方消费。再次,请记住,这在本地工作正常。

路线定义是:

mapRouteManager.MapHttpRoute("DNNEurope/LocalizationEditor", "Default", "", New With {.Controller = "Localization", .Action = "ListObjects"}, New String() {"DNNEurope.Modules.LocalizationEditor.Services"})

和方法:

<HttpGet()>
<AllowAnonymous()>
Public Function ListObjects() As HttpResponseMessage

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

Kiran的评论让我走上正轨。在该项目中,有一个不在服务器上的Mvc库的引用。对于asp.net应用程序而言,这不是一个问题,但对于WebAPI来说这是一个问题。即使Mvc库中的任何方法都不再使用,因为我在项目期间的某个时刻切换到了WebAPI。所以在本地,这个Mvc库仍然存在,但尚未投入生产。