繁体   English   中英

我如何诊断为什么一个asp.net MVC站点可以在一台服务器上运行而不能在另一台服务器上运行?

[英]How do I diagnose why an asp.net MVC site works on one server but not another?

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

因此,我有一个登录页面,用户在其中输入他们的用户名和密码,然后单击“登录”提交按钮。 当他们单击提交时,浏览器被“卡住”; 即“正在运行”图标旋转(我正在使用Chrome),而在页面底部则显示消息“正在等待{site name} ...”。

这是视图中的一些代码:

@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);
        }

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

在此处输入图片说明

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

同样,在Visual Studio的PC和公司的Web服务器上,登录过程可以正常进行。 用户输入用户名和密码,单击“登录”,然后将它们带到下一页。 仅在客户端的服务器上,它才转至缺少的页面。

更新#1

使用Fiddler,我得到此错误消息显示:

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

使用Chrome工具,单击提交按钮后,它会停滞:

在此处输入图片说明

好像没有发布到控制器。 有人对如何解决这个问题有建议吗?

我如何诊断为什么一个asp.net MVC站点可以在一台服务器上运行而不能在另一台服务器上运行?

使用chrome开发工具,您可以诊断为什么某些功能无法正常工作:

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

在此处输入图片说明

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

在此处输入图片说明

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

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

一般来说:

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

答案是,客户端已在IIS中将站点设置为安全站点。 我必须使用https://sitename.com而不是sitename.com或http://sitename.com 一旦完成该操作,所有页面都将起作用。 我不明白为什么原始页面在没有https的情况下起作用,或者为什么单击刷新会显示没有https的正确页面,所以如果有人对此有任何输入,请告诉我。 否则,https是整个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM