DNN Web API服务器错误

时间:2013-09-19 14:18:12

标签: c# asp.net ajax asp.net-web-api dotnetnuke

尝试对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放在 RouteMapper.cs

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 64位。开发机器运行Win 7 64位。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

将评论分解为答案;)

我已经看到Windows Server 2008上的IIS可以以某种方式破坏DNN网站正在使用的文件夹,并且这开始导致DNN中的某些Web服务出现问题。我知道的两个解决方案过去曾为我工作过。

1)在IIS中设置新站点并在该文件夹中安装DNN。 要么 2)将DNN文件移动到服务器上的其他文件夹,将现有的IIS网站指向该文件夹,而不是原始文件夹。

这两个中的一个应该适用于遇到此问题的大多数人。

现在,IIS中究竟出现了什么问题以及为什么现有文件夹可以修复?不知道:(