【发布时间】:2017-09-12 06:32:43
【问题描述】:
我有一个 MVC 5 应用程序,在 .NET 4.6 和 MVC 5.2.3 下开发,当我在我的机器上的 Chrome 和 Edge 中调试它时,它可以 100% 运行。当我部署到我的 ISP 的共享主机时,它会在第一个请求之后的每个请求上给出以下错误,该错误成功并显示登录页面。
403 - 禁止:访问被拒绝。 您无权使用您提供的凭据查看此目录或页面。
然后,如果我从 Chrome 中清除一个名为 .AspNet.ApplicationCookie 的 cookie,则下一个请求会成功,但 cookie 又回来了,所有后续请求都以相同的方式失败。
我没有在我自己的任何代码中使用应用程序状态,我添加到标准 VS2015 项目模板附带的包中的唯一包是:
AutoMapper
elmah.corelibrary
Elmah.Mvc
Unity
Unity.Mvc5
如果我做得正确,当我在 Edge 中检查 cookie 时,没有这样的 cookie,只有 __RequestVerificationToken,它在 Chrome 中没有任何作用(在这个问题的范围之外)。
注意:我现在更改了托管服务提供商,自从应用程序启动后的第一次请求后,几乎每个请求都没有收到 403,我现在大约每 1 到 2 次重定向到我的登录页面分钟。看起来一个提供商正在更好地处理我缺乏身份验证的问题,但强烈怀疑这两个问题都是由于会话丢失造成的。这可能是由于共享主机上的资源有限,所以我尝试在 SQL Server 上存储会话,但没有任何区别,并且 Elamh 没有显示错误,所以我不知道我的会话移动是否有效。
【问题讨论】:
-
主机上的其他应用可以用吗?
-
不,@SamuelTulach,我没有其他主机或应用程序,并且由于更改主机已经缓解了这个问题,正如我在问题底部的注释所说,我不能接受一个 aoo down 并尝试另一个。
-
关于您的下一次托管尝试,您是否在 web.config 中设置了 MachineKey?大多数共享主机负载平衡您的网站。在不设置机器密钥的情况下,IIS 会自己生成一个。如果两台服务器各自生成自己的机器密钥,它们就无法读取彼此的加密 cookie。因此,您似乎已注销。 msdn.microsoft.com/en-us/library/… 请注意,身份验证和会话管理是 Web 应用程序中两个完整且不同的东西。 “退出”与会话无关。
-
@Tommy 感谢有关会话和登录的说明;如果登录是会话的特殊部分还是 100% 单独的,我一直不太清楚。我确实有一个在第一台主机上没有任何区别的机器密钥,但我想我在某处回滚时丢失了它。我会检查并再次添加。
-
NP 教授,有机会的话告诉我你的测试进展如何!
标签: asp.net asp.net-mvc google-chrome cookies asp.net-mvc-5