DNN Web API 服务器错误

本文关键字:错误 服务器 API Web DNN | 更新日期: 2023-09-27 18:31:54

我在尝试对 DNN Web API 控制器进行简单调用时反复收到内部服务器错误 500。我在开发计算机上没有收到此错误,在我们的部署服务器上也没有收到此错误。但是,我们的其他部署服务器之一是问题所在;我想弄清楚为什么。

请考虑 TheBestController 中的以下简单 API 控制器.cs

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 位。

有什么想法吗?

DNN Web API 服务器错误

将注释分解为答案;)

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

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

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

现在,IIS 中到底出了什么问题,为什么可以修复现有文件夹?没有线索:(