我的网站在请求之间不断迫使我回到登录页面(身份验证问题)。
我的本地网站运行良好,并且代码完全相同。没有身份验证问题...
我一直在网上搜索,整天在这个问题上扯头发,尝试按照建议的不同方法,等等。
有人可以向我解释发生了什么以及如何纠正它吗?
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (Membership.ValidateUser(model.UserName, model.Password))
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
Session["Email"] = model.Email;
if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", YeagerTechResources.Resources.AcctUserNamePswdInCorrect);
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
下面是我登录生产站点后立即可用的 cookie 的下图。请注意,没有列出任何 cookie。
Cookie 信息 - http://yeagertech.com/
现在,如果您查看为我的开发站点执行相同代码的相同信息,您会看到以下内容。这让我发疯了,在这上面浪费了一整天。我会感谢任何有帮助的人!
Cookie 信息 - http://localhost:4514/
姓名
代理人
价值
http://localhost:62613/proxy/0/
领域
本地主机
小路
/
过期
2012 年 2 月 12 日晚上 8 点 21 分 16 秒
请注意,在多次请求后,它会返回登录页面 --- 仅在生产站点上,而不是在我的本地站点上。
在需要返回登录页面之前,生产站点上的 cookie 似乎没有足够长的保质期。
我基本上希望 cookie 至少在用户会话中持续存在。
我能做些什么来解决这个问题?
再次感谢....
我需要在 IIS 中配置与该网站相关的设置,我做了以下错误:
“无法使用 SQL Server,因为 SQL Server 上未安装 ASP.NET 2.0 版会话状态。请安装 ASP.NET 会话状态 SQL Server 2.0 版或更高版本”
收到此错误后,我发现需要在 SQL Server 上启用会话状态,因此,我尝试运行 InstallSqlState.SQL 文件(位于本地 PC 上的 Microsoft.Net 版本文件夹中)。
尝试运行脚本后,它失败(出现以下错误),因为在 SystemDatabases 文件夹中我的托管数据库服务器上没有“msdb”数据库。
“数据库 'master' 中的 CREATE DATABASE 权限被拒绝。如果作业不存在,则预计 msdb.dbo.sp_delete_job 会出错。消息 229,级别 14,状态 5,过程 sp_delete_job,第 1 行 EXECUTE 权限在对象“sp_delete_job”,数据库“msdb”,模式“dbo”。消息 911,级别 16,状态 1,第 10 行数据库“ASPState”不存在。确保输入的名称正确。”
所以,除非我的托管数据库上有一个 msdb 数据库(我只有 master 和 tempdb),否则我不可能在我的 sql server 上设置会话状态。
我想知道如何从这里开始。
顺便说一句,我发现即使启用它也不太可能解决问题。我的情况不符合您最初概述的 3 个要点中的任何一个。
这是一个很小的数据库,里面几乎没有任何记录。我只是在我的网站上对其进行测试,以确保在开始向其添加记录之前它可以正常工作。也没有时间间隔。
我很好地转到了几个页面,然后突然回到登录页面......
如果我的本地机器工作正常,它肯定与我需要设置的东西有关,因为我正在使用你的服务器。
我将不胜感激任何帮助....