Asp.net MVC4 - 发布后出现内部服务器500错误

10
刚刚完成我的第一个mvc4应用程序。一切都运行良好,但当我部署它时,每次尝试调用/Account/Register或/Account/Login控制器时,就会出现以下错误: 500-内部服务器错误。存在问题,无法显示您要查找的资源。 我已经在Firefox控制台和Fiddler中嗅探了一下。我在那里没有找到任何有用的信息,但我真的不知道我应该寻找什么。 其他一些帖子说要检查服务器日志,但这本身就是个问题,因为当我尝试下载、移动、查看或删除最新的日志文件时,我会遇到错误,如“文件传输失败”、“550无法访问文件”、“500无法删除文件”。 我不知道还能做什么,请给予建议。 这是调用Login控制器的一些代码。我不会发布Register版本,因为它们似乎相关。 Ajax调用:
$.ajax({
                    url: "/Account/Login",
                    type: "POST",
                    data: $('#loginForm').serialize(),
                    success: function (resultData) {
                        if (resultData.ok) {
                            ...unrelated stuff...has call to 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 = "Login successful." });
            }
            else
            {
                return Json(new { ok = false, message = "The username or password you entered is invalid. Please try again." });
            }
        }

        // If we got this far, something failed, redisplay form
        return View(model);
    }

这里所有的东西看起来都很标准,所以我真的不知道可能是什么或者如何进行诊断。

1个回答

5

我遇到了类似的问题,这是由于某些引用的DLL在服务器的GAC中不存在(仅存在于安装了MVC4 beta的开发机器上)。解决方法是在编译之前将这些依赖项设置为“复制到本地”。

* System.Web.Mvc
* System.Web.Routing
* System.Web.Abstractions
* Microsoft.Web.Infrastructure
* System.Web.Razor
* System.Web.WebPages.Deployment
* System.Web.WebPages.Razor

如果您遇到相同的问题,这些链接可以帮助您解决它:

无法加载文件或程序集'System.Web.Mvc'

http://haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx


谢谢您的回复,但这对我没有用。我已经将所有那些dll文件(以及其他一些文件)复制到了服务器上的wwwroot / bin文件夹中,但这并没有解决问题。由于只有“注册”和“登录”控制器不起作用,而其他控制器则正常,因此我怀疑我的数据库没有被复制过去。当我使用VS发布功能时,没有选项可以包括App_Data文件,我也没有在服务器上看到数据库。这可能是问题所在,我现在将进行研究,因为我以前从未做过,但是任何使这可能更容易的评论当然都受欢迎:) 谢谢 - parliament
你能否编辑你的帖子,包括实际的500错误细节?在浏览器中关闭“友好错误消息”,并启用web.config中的customErrors元素,以便您可以看到实际的错误消息。http://msdn.microsoft.com/en-us/library/h0hfz6fc.aspx - mellodev
我在web.config文件中添加了<customErrors mode="On"></customErrors>,并关闭了友好的错误消息:错误仍然是相同的,即:500 - 内部服务器错误。 您正在查找的资源存在问题,无法显示。 - parliament
这是被认为是一条详细信息吗?还是我做错了什么? - parliament
2
实际上,需要将customErrors设置为“Off”。这应该会显示实际的异常信息,而不是通用的“500服务器错误”消息。一旦您看到实际的异常信息,我相信您就知道该如何修复了。完成后,请不要忘记重置此设置,以防止代码/异常详细信息泄露给用户。祝好运! - mellodev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接