Asp.net MVC4 - 内部服务器500错误 - 仅在发布时发生

28 浏览
0 Comments

Asp.net MVC4 - 内部服务器500错误 - 仅在发布时发生

刚刚完成了我的第一个mvc4应用程序。一切都运行得很好,直到部署时出现了问题:

500 - 内部服务器错误。您正在查找的资源存在问题,无法显示。

每次尝试调用/Account/Register或/Account/Login控制器时都会出现此问题:

我在Firefox控制台和Fiddler中查看了一下,但没有找到有用的信息,但我也不知道我应该找什么。

其他一些帖子说要检查服务器日志,但这本身就是一个问题,因为当我尝试下载、移动、查看或删除最新的日志文件时,出现了诸如“文件传输失败”、“550无法访问文件”、“500无法删除文件”之类的错误。

我不知道还能做什么,请给予指导。

下面是对登录控制器的调用的一些代码。我不会贴出注册版本,因为它们似乎是相关的。

Ajax调用:

$.ajax({
                    url: "/Account/Login",
                    type: "POST",
                    data: $('#loginForm').serialize(),
                    success: function (resultData) {
                        if (resultData.ok) {
                            ...与此无关的内容...包含对resultData.message的调用
                        }
                    }
                });

登录控制器:

    [AllowAnonymous]
    [HttpPost]
    public ActionResult Login(LoginModel model)
    {
        if (ModelState.IsValid)
        {
            if (Membership.ValidateUser(model.UserName, model.Password))
            {
                FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
                return Json(new { ok = true, message = "登录成功。" });
            }
            else
            {
                return Json(new { ok = false, message = "您输入的用户名或密码无效。请重试。" });
            }
        }
        // 如果到达这一步,说明有错误,重新显示表单
        return View(model);
    }

这一切看起来都很标准,所以我真的不知道可能是什么问题,也不知道如何诊断。

0
0 Comments

问题的原因是服务器上缺少某些引用的DLL文件,解决方法是在编译之前将这些依赖项设置为“复制到本地”。

如果你遇到了相同的问题,这些链接将帮助你解决:

- [Could not load file or assembly 'System.Web.Mvc'](https://stackoverflow.com/questions/267006)

- [http://haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx](http://haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx)

感谢您的回复,但这对我没有用。我将所有这些DLL文件(以及其他一些文件)复制到了服务器上的wwwroot/bin文件夹中,但问题没有解决。由于只有Register和Login控制器不工作,我怀疑我的数据库没有被复制过去。当我使用VS发布功能时,没有包含App_Data文件的选项,我也没有在服务器上看到数据库。这可能是问题的原因,我现在将进行研究,因为我以前从未做过,但如果有任何简化此过程的建议,请随时提供:)谢谢

你能编辑你的帖子以包含实际的500错误详细信息吗?在浏览器中关闭“友好的错误消息”,并在web.config文件中启用customErrors元素,这样你就可以看到实际的错误消息。

我在web.config文件中添加了并关闭了友好的错误消息:错误仍然是相同的,简单地显示为:500 - 内部服务器错误。你要查找的资源有问题,无法显示。

实际上,需要将customErrors设置为"Off"。这应该会显示实际的异常,而不是通用的"500服务器错误"消息。一旦你看到实际的异常,我相信你会知道如何修复。完成后不要忘记重置此设置,以防止代码/异常的详细信息传递给用户。祝好运!

0