9

ビルドしようとするたびに、このエラーが発生します。Visual Studio 2012 と .Net 4.5 をインストールしたばかりですが、このプロジェクトはまだ 2010 です。

私が問題を抱えているコード行は次のとおりです。

private static MethodInfo _encode;
public static string Encode(CookieProtection cookieProtection, byte[] buf, int count)
{
  return (string)_encode.Invoke(null, new object[] { cookieProtection, buf, count });
}

「私の開発環境では何も変更されておらず、同僚も同じ問題を抱えていませんが、VS2012 も持っていません」というArgumentException was unhandled by user codeエラーが表示されます。"Object of type 'System.Int32' cannot be converted to type 'System.Web.Security.Cryptography.Purpose'"

このエラーが発生している Sitecoreに関する記事を見つけましたが、ポップアップが表示されたのはここだけです。

「これは、.NET 4.5 で System.Web にいくつかの新しい名前空間があるためです」

彼らの解決策は次のとおりです。

  • VS11 がインストールされている場合はアンインストールします
  • .NET 4.5 をアンインストールする
  • .NET 4 を再インストールする

これは、4.5 と 4 が同じマシン上に存在できないというばかげた解決策のように思えます。

たくさんのものをアンインストールして再インストールしようとする前に、これを引き起こしている可能性のあるものと、より良い解決策を誰かが知っていますか?

コメントにも試してみると書かれています</setting name="login.rememberlastloggedinusername" value="false" >が、私もそれをしたくありません。

4

4 に答える 4

9

@hvd が示唆したように、このコードはリフレクションを使用して、Microsoft が .NET 4.5 で変更した内部メソッドを呼び出しています。

幸いなことに、.NET 4.0 では、.NETの内部メソッドと基本的に同じことを達成System.Web.Security.MachineKeyする publicメソッドEncode()とメソッドを含むクラスが導入されました。で暗号化された Cookie は で復号化できないことに注意してください。Decode()CookieProtectionHelperCookieProtectionHelper.Encode()MachineKey.Decode()

Protect()また、.NET 4.5 では、これらのメソッドは廃止され、とが優先されることに注意してくださいUnprotect()

于 2012-08-21T02:47:01.073 に答える
7

web.configの値をfalseに変更します。

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

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

于 2012-10-30T17:32:45.230 に答える
3

ここからもらえましたか?

_encode = cookieProtectionHelper.GetMethod(
    "Encode", BindingFlags.NonPublic | BindingFlags.Static);

これは、MSが変更しないと約束したことのない.NETFrameworkの内部実装の詳細に依存しています。そうです、.NET Frameworkをインプレースでアップグレードすると、そのようなコードが機能しなくなる可能性があります。これは.NET4.5のバグではありません。これは、信頼できないものに依存するためのコードのバグです。

そしてそれを解決するには、その方法の使用をやめます。必要なことを実行するパブリックAPIがある場合は、それを使用します。ない場合は、自分で実装してください。

于 2012-08-06T16:40:08.880 に答える
1

CMS ソフトウェアEktronの使用中にこのエラーが表示された場合は、 8.7 リリース ノートに次のように記載されています。

71233 - 8.6.1 サイトをインストールし、web.config () で Cookie 暗号化を有効にしてから、Microsoft .NET Framework 4.5 をインストールすると、次のエラーが表示されました。

 Server Error in '/' Application. 
 Object of type 'System.Int32' cannot be converted to type System.Web.Security.Cryptography.Purpose'. This

固定されています。

他の回答で述べたように、1 つの解決策は .Net Framework 4.0 にロールバックすることです。Ektron を使用したこの特定のケースでのその他の回答は、Cookie の暗号化を無効にするか、8.7 にアップグレードすることです。

于 2013-05-15T04:31:28.383 に答える