【发布时间】:2015-04-06 02:28:51
【问题描述】:
在我们的 ASP.NET MVC 4 Web 应用程序中,我们在登台服务器上收到以下错误。当在客户端通过AJAX 对操作方法进行POST 调用时,我们会通过 Google Chrome 调试工具窗口捕获此错误:
POST http://StagingServerURL/ControllerName/ActionMethodName 500 (Internal Server Error)
应用程序以完全相同的代码和数据库部署在开发计算机和生产服务器以及it works on both of these two machines just fine 上。三台机器的设置如下:
- 开发机器: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;
}
}
AJAX 调用:
$('#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");
}
});
});
【问题讨论】:
-
文件的复制立即引起了我的注意,我想到了权限。您还没有提供有关调试的任何详细信息。如果您注释掉文件复制,问题是否仍然存在?返回的实际错误是什么?内部 500 并没有给我们太多的工作。尝试输出更多细节。
-
暂存服务器未安装 Visual Studio,其他服务器确实存在问题。如何通过 Google Chrome 开发工具获取详细的错误消息?
-
页面可以输出更多信息。不仅仅是错误 500。
-
@RowanFreeman,我不知道如何使用 Google Chrome 开发工具在客户端显示服务器端错误。我需要在 Web.config 文件中进行一些设置以在 Chrome 调试工具中获取服务器端错误吗?如果是这样,那将是什么设置?
标签: ajax json asp.net-mvc iis asp.net-ajax