I'm trying to get the current machineKey that is being used to encrypt/decrypt my ViewState, etc. in an attempt to debug another issue. (My app is in a server farm and there are machine keys set in the machine.config and web.config of each server and application so in an attempt to debug an issue where some resources are not being decrypted properly. I'm experimenting with this to see which one is being used for encryption.) Here is my code snippet:
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()));
As is, line 3 is throwing an "Object reference not set to an instance of an object." which means that I'm probably not setting that second null param correctly (property must be indexed, right?).
But the ParameterInfo of the machineKey's ValidationKey property is returniung a length of zero (so the property is not indexed, right?).
ParameterInfo[] paramInfo = machineKey.GetIndexParameters();
Response.Write(pa开发者_如何学JAVAramInfo.Length);
http://msdn.microsoft.com/en-us/library/b05d59ty(v=VS.90).aspx
There is obviously something that I am overlooking here and would love a second pair of eyes to look at this. Any suggestions?
You are passing in the typeof(MachineKeySection), when you should be passing in an instance of MachineKeySection.
Type machineKeySection = typeof(MachineKeySection);
Object validationKey = machineKey.GetValue(machineKeySection, null);
Needs to be something like (taken from here):
MachineKeySection machineKeySection = (MachineKeySection)config.GetSection("system.web/machineKey");
Object validationKey = machineKey.GetValue(machineKeySection, null);
So to answer your question, no it's not an indexed property. You can check the documentation here.
精彩评论