0

安装 .NET 4.5 后,任何访问 Workbox 的用户现在都会收到异常:

“System.Int32”类型的对象无法转换为“System.Web.Security.Cryptography.Purpose”类型。

经过一些基本的谷歌搜索,似乎这个问题曾经在登录时发生,并在 6.5 中解决了登录问题。我登录 Sitecore 没有任何问题。到目前为止,我只在工作流框中看到了这个问题。

在安装 .NET 4.5 之前,我们在 .NET 4.0 上运行没有任何问题。

有没有人找到一种解决方法来让安装了 .NET 4.5 的 Workbox 运行?

注意:我目前使用的是 Sitecore 6.5 Update 5

全栈跟踪:

[ArgumentException:“System.Int32”类型的对象无法转换为“System.Web.Security.Cryptography.Purpose”类型。] System.RuntimeType.TryChangeType(对象值,Binder binder,CultureInfoculture,Boolean needsSpecialCast)+185 System .Reflection.MethodBase.CheckArguments(Object[] 参数, Binder binder, BindingFlags invokeAttr, CultureInfoculture, Signature sig) +122 System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] 参数, CultureInfoculture ) +206 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] 参数, CultureInfo 文化) +126 Sitecore.SecurityModel.Cryptography.CookieProtectionHelperWrapper.Encode(CookieProtection cookieProtection,Byte[] buf,Int32 计数)+175 Sitecore.Shell.Feeds.FeedUrlOptions.ToString() +192 Sitecore.Shell.Applications.Workbox.WorkboxForm.DisplayWorkflow(IWorkflow 工作流)+496 Sitecore.Shell.Applications.Workbox.WorkboxForm。 OnLoad(EventArgs e) +545

[TargetInvocationException:调用目标已引发异常。] System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) +0 System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[ ] 参数,Object[] 参数)+76 System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object[] 参数,CultureInfo 文化)+193 System.Reflection.MethodBase.Invoke(Object obj,Object[ ] 参数) +35 Sitecore.Web.UI.Sheer.ClientPage.OnLoad(EventArgs e) +337 System.Web.UI.Control.LoadRecursive() +116 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint ) +2910

更新: 我们已经更改了 web.config 条目,这就是 Login 正常工作的原因:

<setting name=”Login.RememberLastLoggedInUserName” value=”false” />
4

6 回答 6

2

作为一种解决方法,只需在您的 web.config 中更改此设置。

<setting name=”Login.RememberLastLoggedInUserName” value=”false” />

于 2012-10-26T16:56:26.150 回答
2

感谢 Mark 和 Stephen 的帮助,不幸的是,这两个选项都不适用于此特定场景。(但是,我赞成,因为他们可能会帮助其他人遇到这个问题)。

经过进一步挖掘,在这种情况下发生的情况似乎是一些 Sitecore 6.5 Update 5 DLL 尚未部署,而是在版本 6.5 Update 4 上。

重新部署正确的 Update 5 DLL(并保留我们之前的 web.config 更改)后,该站点现在在 .NET 4.5 上运行,并且工作箱现在加载,没有抛出任何异常。

于 2012-10-26T18:07:23.283 回答
1

This blog post似乎有一个解决方案,其中涉及卸载.NET 4.5并重新安装4.0

于 2012-10-26T17:12:06.160 回答
1

如果您运行的是 6.5 update 5 之前的版本,则需要覆盖工作箱方法:

DisplayStates
DisplayWorkflow

并像这样设置提要选项:

var feedUrlOptions = new FeedUrlOptions("/sitecore/shell/~/feed/workflowstate.aspx")
   {
      // HACK: This is to make workbox work on machines with .NET 4.5 installed
      UseUrlAuthentication = false
   };
于 2012-10-27T12:45:31.853 回答
0

我知道这已经解决了,但是当我遇到这个错误并以不同的方式解决时,我的想法仍然会有所帮助。

查看以下链接:

  1. http://www.sitecore.net/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2012/09/Object-of-type-System-Int32-cannot-be-converted-to-type-系统-Web-安全-密码学-Purpose.aspx

  2. 阅读 Kevin Obee 在http://kamranicus.com/Blog/Posts/45/sitecore-and-net-framework-45底部的评论

  3. http://truncatedcodr.wordpress.com/2012/06/20/fix-sitecore-and-net-framework-4-5/

阅读本文解决了我的问题,并且 Sitecore 工作正常。

于 2012-11-21T01:13:45.900 回答
0

除此之外,我遇到了这个问题,但只是在启动工作箱时。此链接http://www.daveleigh.co.uk/sitecore-workbox-object-of-type-system-int32-cannot-be-converted-to-type-system-web-security-cryptography-purpose/提供了一个sitecore 提供的修复程序解决了我的问题。

于 2017-02-13T12:55:54.470 回答