0

別の問題をデバッグするために、ViewStateなどの暗号化/復号化に使用されている現在のmachineKeyを取得しようとしています。(私のアプリはサーバーファームにあり、各サーバーとアプリケーションのmachine.configとweb.configにマシンキーが設定されているため、一部のリソースが適切に復号化されていない問題をデバッグしようとしています。実験中です。これにより、暗号化に使用されているものを確認できます。)コードスニペットは次のとおりです。

Line 1:  Type machineKeySection = typeof(MachineKeySection);
Line 2:  PropertyInfo machineKey = machineKeySection.GetProperty("ValidationKey");
Line 3:  Object validationKey = machineKey.GetValue(machineKeySection, null);
Line 4:  Response.Write(String.Format("Value: {1}", validationKey.ToString()));

現状では、3行目は「オブジェクトのインスタンスに設定されていないオブジェクト参照」をスローしています。これは、おそらく2番目のnullパラメータを正しく設定していないことを意味します(プロパティにはインデックスを付ける必要がありますよね?)。

ただし、machineKeyのValidationKeyプロパティのParameterInfoは、長さがゼロで返されます(したがって、プロパティはインデックス付けされませんよね?)。

ParameterInfo[] paramInfo = machineKey.GetIndexParameters();
Response.Write(paramInfo.Length);

http://msdn.microsoft.com/en-us/library/b05d59ty(v=VS.90).aspx

私がここで見落としていることが明らかにあり、これを見るのに2番目の目が欲しいです。助言がありますか?

4

1 に答える 1

0

MachineKeySectionのインスタンスを渡す必要があるときに、typeof(MachineKeySection)を渡します。

Type machineKeySection = typeof(MachineKeySection);
Object validationKey = machineKey.GetValue(machineKeySection, null);

(ここから取得)のようなものである必要があります:

MachineKeySection machineKeySection = (MachineKeySection)config.GetSection("system.web/machineKey");
Object validationKey = machineKey.GetValue(machineKeySection, null);

したがって、あなたの質問に答えるために、それはインデックス付きのプロパティではありません。ここでドキュメントを確認できます。

于 2011-06-23T00:33:53.150 に答える