ASP.NET MVC、AJAX POST 500(内部服务器错误)在一台服务器上,而不是在其他两台机器上

ASP.NET MVC、AJAX POST 500(内部服务器错误)在一台服务器上,而不是在其他两台机器上,ajax,json,asp.net-mvc,iis,asp.net-ajax,Ajax,Json,Asp.net Mvc,Iis,Asp.net Ajax,在我们的ASP.NET MVC 4 web应用程序中,我们在登台服务器上遇到以下错误。通过Google Chrome调试工具窗口,当客户端通过AJAX对操作方法进行POST调用时,我们会捕获此错误: POST http://StagingServerURL/ControllerName/ActionMethodName 500 (Internal Server Error) 应用程序使用完全相同的代码和数据库部署在开发机器和生产服务器上,它可以在这两台机器上正常工作。这三台机器具有以下设置:

在我们的ASP.NET MVC 4 web应用程序中,我们在登台服务器上遇到以下错误。通过Google Chrome调试工具窗口,当客户端通过
AJAX
对操作方法进行
POST
调用时,我们会捕获此错误:

POST http://StagingServerURL/ControllerName/ActionMethodName 500 (Internal Server Error)
应用程序使用完全相同的代码和数据库部署在开发机器和生产服务器上,
它可以在这两台机器上正常工作。这三台机器具有以下设置:

  • 开发计算机:Windows 7 Professional、IIS 7.5、SQL Server 2008 R2
  • 生产:Windows Server 8 R2、IIS 7.5、SQL Server 2008 R2
  • 登台:Windows Server 2012 R2标准,
    IIS 8.5
    ,SQL Server 2008 R2
动作方法

public ActionResult SaveData(FormCollection collection)
{
    try
    {
        ...code to insert data to SQL Server Db...
        }
        db.SubmitChanges();
        System.IO.File.Copy(Server.MapPath("~/FolderName/File1Name.txt,Server.MapPath("~/FolderName/File2Name.txt,true);

        return Json("");
    }
    catch (Exception e)
    {
        throw e;
    }
}
$('#submitButton').click(function () {
    var data = $('form').serializeObject();
    $.ajax({
        url: '@Url.Action("SaveData")', type: "POST",
        data: data,
        success: function (data) {
            $('#Status').show().fadeOut(8000);
        },
        error: function (data) {
            alert("An error occured");
        }
    });
});
AJAX调用

public ActionResult SaveData(FormCollection collection)
{
    try
    {
        ...code to insert data to SQL Server Db...
        }
        db.SubmitChanges();
        System.IO.File.Copy(Server.MapPath("~/FolderName/File1Name.txt,Server.MapPath("~/FolderName/File2Name.txt,true);

        return Json("");
    }
    catch (Exception e)
    {
        throw e;
    }
}
$('#submitButton').click(function () {
    var data = $('form').serializeObject();
    $.ajax({
        url: '@Url.Action("SaveData")', type: "POST",
        data: data,
        success: function (data) {
            $('#Status').show().fadeOut(8000);
        },
        error: function (data) {
            alert("An error occured");
        }
    });
});
解决方案1: 将500内部服务器错误的错误页中的IIS 8.5设置更改为详细错误消息,而不是本地请求的详细错误和远程请求的自定义错误页

我希望这能解决

解决方案2:
从代码中,我假设您缺少这个JSON(“,JsonRequestBehavior.AllowGet

文件的复制立刻引起了我的注意,并想到了权限。你还没有给出任何调试的细节。如果您注释掉文件复制,问题是否仍然存在?返回的实际错误是什么?内部500没有给我们太多的工作。尝试输出更多详细信息。临时服务器未安装Visual Studio,其他服务器确实存在此问题。如何通过Google Chrome开发工具获取详细的错误消息?该页面可以输出更多信息。不仅仅是错误500。@RowanFreeman,我不知道如何使用Google Chrome开发工具在客户端显示服务器端错误。我需要在Web.config文件中进行一些设置,以便在Chrome调试工具中获得服务器端错误?如果是这样的话,该设置是什么?你会让你的答案更复杂吗?为了显示来自应用程序的详细错误消息,我们需要更改IIS 8.5中的设置。默认情况下,IIS 7的设置与IIS 8.5不同。我遇到了与Rowan Freeman相同的问题。因此我认为这可以解决问题。