c# - DNN Web API 服务器错误

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

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

考虑以下 TheBestController.cs 中的简单 API Controller

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 站点)。

我还尝试在 Controller 方法上使用 [AllowAnonymous] 标记(无济于事)。

所有机器上的DNN版本都是07.01.01,两台服务器运行的是Server 2008 R2 64bit。开发机器正在运行 Win 7 64 位。

有什么想法吗?

最佳答案

将评论分解为答案;)

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

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

这两个中的一个应该对大多数遇到这个问题的人有用。

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

关于c# - DNN Web API 服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18897229/

相关文章:

c# - 如何在数据库中保存图像 URL?

php - ajax更新mysql字段而不刷新页面

javascript - 通过ajax发送字节数组

c# - 获取 Button 内的 TextBlock

c# - DataGridView 更新数据源受 ProcessDataGridViewKey 阻碍?

c# - 更新了 web api 的验证示例

c# - 防止用户修改文本框中的日期

基于单元格文本的 Microsoft.Office.Interop.Excel.Cells 上的 C# 条件格式

c# - 作为电子邮件附件发送后,文件卡在 w3wp.exe 中

javascript - 将复选框重置为初始状态