【发布时间】:2016-01-11 12:01:59
【问题描述】:
我有一个带有 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);
}
在登录页面,输入登录信息并点击登录后,它会“旋转”几分钟,然后显示页面未找到消息:
奇怪的是,如果您然后单击刷新,它会显示用户登录的正确页面。
同样,在我的 PC 上的 Visual Studio 和我公司的 Web 服务器上,登录过程运行良好。用户输入用户名和密码,单击登录,然后将他们带到下一页。只有在客户端的服务器上,它才会转到丢失的页面。
更新 #1
使用 Fiddler,我得到了这个错误信息来显示:
ReadResponse() 失败:服务器没有为此请求返回完整的响应。服务器返回 0 个字节。
使用 Chrome 工具,我可以看到它在单击提交按钮后停止:
看起来它没有发布到控制器。有人对如何解决这个问题有建议吗?
【问题讨论】:
-
检查客户端错误,并将适当的日志记录添加到服务器端。特别注意无限循环的情况。
-
我发现 fiddler 是一个有用的免费工具,只是为了确保呼叫按您期望的方向进行。
-
也许这是一个愚蠢的问题,但您的应用程序的数据库连接字符串是否与您的客户端配置相匹配?你确定你不是在某个地方试图从无法访问的数据源获取数据吗?
-
你可以检查服务器上没有工作的事件查看器。
-
@Luc 我应该在事件查看器中寻找什么?最近好像什么都没有更新。我的文件夹选项(左侧)是自定义视图(服务器角色、管理事件)、窗口日志(应用程序、安全性、设置、系统、转发事件)、应用程序和服务(除了 windows power shell 之外都是空的)。
标签: c# asp.net asp.net-mvc iis razor