2

在 nog 使用我们 umbraco 网站的后端几个月后,我再次开始为我们的网站进行开发。由于某些人正在使用该网站,因此我决定使用暂存环境。所以我移动了所有文件,最后也克隆了数据库。

但是现在每当我尝试登录 umbraco 的后端(在实时和登台环境中)时,我的 firebug 控制台中都会出现 javascript 错误:

{"Message":"The user has no umbraco contextid - try logging in","StackTrace":"   at Umbraco.Web.Security.WebSecurity.ValidateCurrentUser(HttpContextBase httpContext, Boolean throwExceptions)\r\n   at Umbraco.Web.Security.WebSecurity.AuthorizeRequest(HttpContextBase httpContext, Boolean throwExceptions)\r\n   at Umbraco.Web.WebServices.UmbracoAuthorizedWebService.AuthorizeRequest(Boolean throwExceptions)\r\n   at Umbraco.Web.WebServices.UmbracoAuthorizedWebService.AuthorizeRequest(String app, Boolean throwExceptions)\r\n   at umbraco.presentation.webservices.TreeClientService.GetInitAppTreeData(String app, String treeType, Boolean showContextMenu, Boolean isDialog, TreeDialogModes dialogMode, String functionToCall, String nodeKey)","ExceptionType":"System.InvalidOperationException"}

正如其他帖子中所建议的,我删除了我的 cookie 并重试,但没有运气。

我还时不时遇到其他一些错误:

uiKeys 未定义

我使用二进制上传了我的 umbraco/config/lang 文件夹,但有时我仍然会收到错误消息

视图状态 MAC 验证失败。如果此应用程序由 Web Farm 或集群托管,请确保配置指定相同的 validationKey 和验证算法。AutoGenerate 不能在集群中使用。

我将此添加到我的 web.config

<pages enableEventValidation="false" validateRequest="false" viewStateEncryptionMode ="Never" />

错误似乎消失了

在我被重定向到的注销页面开始时,我在文档类型声明中也遇到了一些关于 synthax 的错误

我已经在这几个小时了,似乎无法修复它。

本地登录作品。


编辑

我刚刚重新安装了 6.1.6 和 6.1.5 并尝试登录,但我仍然收到错误: http ://staging.mydomaimn.com/umbraco/webservices/TreeClientService.asmx/GetInitAppTreeData500 内部服务器错误: {"Message":"The user has no umbraco contextid - try login","StackTrace":" at Umbraco.Web.Security.WebSecurity.ValidateCurrentUser(HttpContextBase httpContext, Boolean throwExceptions)\r\n at Umbraco.Web.Security.WebSecurity.AuthorizeRequest(HttpContextBase httpContext, Boolean throwExceptions)\r\n 在 Umbraco.Web.WebServices.UmbracoAuthorizedWebService.AuthorizeRequest(Boolean throwExceptions)\r\n 在 Umbraco.Web.WebServices.UmbracoAuthorizedWebService.AuthorizeRequest(String app, Boolean throwExceptions)\r\n at umbraco.presentation.webservices.TreeClientService.GetInitAppTreeData(String app, String treeType, Boolean showContextMenu, Boolean isDialog, TreeDialogModes dialogMode, String functionToCall, String nodeKey)","ExceptionType":"System.无效操作异常"}

这是在以前从未登录过的全新安装上可能问题出在数据库设置上。我的主机使用 MSSQL 2012,我有两个数据库,第一个用于实时版本,称为“myloginname”,第二个用于暂存版本,称为“myloginname_1”。将登录信息放入数据库时​​,_1 是否有问题(我读过 Umbraco)?


编辑 2

刚刚查看了我的数据库,Umbraco 确实在 db 表“umbracoUserLogins”中创建了一个 contextId,但没有创建应该包含相同“UMB_UCONTEXT”的 cookie

所以这可能是我真正的问题,可能是什么原因造成的?

编辑:有关此的更多信息: 当我查看 Fiddler 时,我可以看到:在“原始”选项卡上:

HTTP/1.1 302 找到缓存控制:私有内容类型:文本/html;charset=utf-8 位置:/umbraco/ 设置 Cookie:ASP.NET_SessionId=zjlqfoxq421wmnpeydcbxv1t;路径=/; HttpOnly Set-Cookie: ASP.NET_SessionId=zjlqfoxq421wmnpeydcbxv1t; 路径=/; HttpOnly Set-Cookie: UMB_UCONTEXT=694C3[...很多文字...]CFDD5EDB; 到期=格林威治标准时间 2013 年 11 月 12 日星期二 14:07:23;路径=/; HttpOnly 日期:星期一,2013 年 11 月 11 日 14:07:23 GMT 内容长度:126

cookie 选项卡显示:

响应发送了 1318 字节的 Cookie 数据: Set-Cookie: UMB_UCONTEXT=694C3[...a lot of text...]D5EDB; 到期=格林威治标准时间 2013 年 11 月 12 日星期二 14:07:23;路径=/; HttpOnly 此响应不包含 P3P 标头。

所以我们可以得出结论:

  • 到期时间和日期正确
  • 有一个 302 错误,但这似乎适用于所有 cookie,并且提到的另外两个是创建的(我对此感到困惑)
  • 也许 P3P 标头是一个问题?
4

1 回答 1

1

我能够解决这个问题。未创建 UMB_UCONTEXT cookie 的原因是我修复了错误

视图状态 MAC 验证失败。如果此应用程序由 Web Farm 或集群托管,请确保配置指定相同的 validationKey 和验证算法。AutoGenerate 不能在集群中使用。

错误的方法。正如如何修复:“视图状态 MAC 验证失败”错误(ASP.NET MVC)所示,我需要创建一个随机机器密钥并将其添加到我的 web.config

于 2013-11-11T14:59:12.883 回答