尝试对 DNN Web API 控制器进行简单调用时,我反复收到内部服务器错误 500。我在我的开发机器上没有收到此错误,也没有在我们的一台部署服务器上收到此错误。但是,我们的其他部署服务器之一是问题所在;我想弄清楚为什么。
考虑TheBestController.cs中的以下简单 API 控制器
namespace MyTestLibrary.Controllers
{
public class TheBestController : DnnApiController
{
[DnnAuthorize]
[HttpPost]
public HttpResponseMessage TestMe()
{
return Request.CreateResponse(HttpStatusCode.OK, "I'm working");
}
}
}
在 RouteMapper.cs 中使用这个RouteMapper
using DotNetNuke.Web.Api;
namespace MyTestLibrary
{
public class RouteMapper : IServiceRouteMapper
{
public void RegisterRoutes(IMapRoute mapRouteManager)
{
mapRouteManager.MapHttpRoute("TheBestController", "default", "{controller}/{action}", new[] { "MyTestLibrary.Controllers" });
}
}
}
使用来自我的 Javascript 的以下 AJAX 调用:
$.post("DesktopModules/MyTestLibrary/API/TheBest/TestMe", function(data) {
alert(data);
});
我已确保为 IIS 中的 DNN 应用程序设置了所有正确的权限(以及镜像这些权限以及我们服务器上具有此功能的所有其他相关设置)。我将编译好的MyTestLibrary.dll放在 DNN 站点的 bin 文件夹中,并将 javascript 文件放在 DNN 站点的 Resources/Shared/scripts 文件夹中。DNN 站点正在毫无问题地读取 javascript,并且我没有使用模块(并且不想使用,因为我希望我的所有代码都可以轻松转移到 MVC 站点)。
我也尝试[AllowAnonymous]
在控制器方法上使用标签(无济于事)。
所有机器上的DNN版本都是07.01.01,两台服务器运行Server 2008 R2 64bit。开发机器正在运行 Win 7 64 位。
有任何想法吗?