我有一个带有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);
}
在登录页面上,输入登录信息并单击登录后,它会“旋转”几分钟,然后显示找不到的页面消息:
奇怪的是,如果您再单击“刷新”,则会在用户登录时显示正确的页面。
同样,在我的Visual Studio和我公司的Web服务器上的PC上,登录过程正常。用户输入用户名和密码,单击“登录”,然后将其带到下一页。只有在客户端的服务器上才会转到缺少的页面。
更新#1
使用Fiddler,我收到此错误消息:
ReadResponse()失败:服务器未返回此请求的完整响应。服务器返回0个字节。
使用Chrome工具,我可以看到点击提交按钮后停止:
看起来它没有发布到控制器。有人建议如何解决这个问题吗?
答案 0 :(得分:3)
如何诊断asp.net MVC网站在一台服务器上运行而不是另一台服务器的原因?
使用chrome dev工具,您可以诊断出某些内容无效的原因:
内部服务器错误: (在这种情况下,500内部服务器错误)
您可以单击特定请求,然后单击预览以获取详细信息:
答案 1 :(得分:1)
基于ReadResponse错误,似乎是IIS配置问题:
一般来说:
答案 2 :(得分:0)
答案结果是客户端已将IIS中的站点设置为安全站点。我不得不使用https://sitename.com而不是sitename.com或http://sitename.com。一旦我这样做,所有页面都有效。我不明白为什么原始页面没有https工作或者为什么点击刷新显示没有https的正确页面,所以如果有人有任何输入,请告诉我。否则https就是整个问题。