我如何诊断为什么asp.net MVC站点在一台服务器上工作而不在另一台服务器上工作?

时间:2015-10-13 16:17:14

标签: c# asp.net asp.net-mvc iis razor

我有一个带有Razor网站的asp.net MVC,可以在我的PC和我们公司的测试服务器上正常工作。但是,在客户端的Web服务器上,它会“卡在”登录页面上。我无法在客户端的服务器上调试该站点(他们没有Visual Studio),我无法在其他任何地方复制该问题。有关如何找到问题的任何建议?另外,任何想法可能是什么问题?

所以我有一个登录页面,用户输入他们的用户名和密码,然后点击“登录”提交按钮。当他们点击提交时,浏览器会“卡住”;这就是“工作”图标旋转(我正在使用Chrome),而在页面底部显示消息“等待{网站名称} ...”。

以下是视图中的一些代码:

@using (Html.BeginForm("Login", "Admin", FormMethod.Post))
{
           <label>
             <b>Username</b>
           </label>
           @Html.TextBoxFor(m => m.UserName, new { @class = "span12" })
           <span class="validation">@Html.ValidationMessageFor(m => m.UserName)</span>

           <label>
             <b>Password</b>
           </label>
           @Html.PasswordFor(m => m.Password, new { @class = "span12" })

           <input id="Submit1" type="submit" value="Sign In" class="btn btn-primary pull-right" />
}

这是控制器的一部分。我省略了一些错误处理,但你会明白这是一个简单的“检查是否存在用户名和密码”操作。

        [HttpPost]
        public ActionResult Login(ModelAdminLogin Model)
        {
            if (ModelState.IsValid) 
            {
                LoginResponse Res = obj_bllCA.Login(Model.UserName, Model.Password);
                if (Res.LoginStatus)
                {
                  return RedirectToAction("Index");
                }
            }
            return View(Model);
        }

在登录页面上,输入登录信息并单击登录后,它会“旋转”几分钟,然后显示找不到的页面消息:

enter image description here

奇怪的是,如果您再单击“刷新”,则会在用户登录时显示正确的页面。

同样,在我的Visual Studio和我公司的Web服务器上的PC上,登录过程正常。用户输入用户名和密码,单击“登录”,然后将其带到下一页。只有在客户端的服务器上才会转到缺少的页面。

更新#1

使用Fiddler,我收到此错误消息:

ReadResponse()失败:服务器未返回此请求的完整响应。服务器返回0个字节。

使用Chrome工具,我可以看到点击提交按钮后停止:

enter image description here

看起来它没有发布到控制器。有人建议如何解决这个问题吗?

3 个答案:

答案 0 :(得分:3)

  

如何诊断asp.net MVC网站在一台服务器上运行而不是另一台服务器的原因?

使用chrome dev工具,您可以诊断出某些内容无效的原因:

内部服务器错误: (在这种情况下,500内部服务器错误)

enter image description here

您可以单击特定请求,然后单击预览以获取详细信息:

enter image description here

答案 1 :(得分:1)

基于ReadResponse错误,似乎是IIS配置问题:

  • 如果您有HTTPS,请检查相应的绑定,端口和证书是否正确。
  • 如果使用重写,请检查是否已安装URLRewrite模块。

一般来说:

  • 启用IIS日志记录并查看日志。
  • 在IIS中启用失败的请求跟踪并查看跟踪。
  • 确保处理Application_Error并将异常详细信息写入日志。

答案 2 :(得分:0)

答案结果是客户端已将IIS中的站点设置为安全站点。我不得不使用https://sitename.com而不是sitename.com或http://sitename.com。一旦我这样做,所有页面都有效。我不明白为什么原始页面没有https工作或者为什么点击刷新显示没有https的正确页面,所以如果有人有任何输入,请告诉我。否则https就是整个问题。