2010-06-29 3 views
0

Я читал это сообщение, чтобы помочь мне разобраться в моем кэшировании, и я столкнулся с проблемой. Когда я пытаюсь сделать вызов метода ниже, я получаю следующее сообщение об ошибке:Возникли проблемы с кэшированием Spring.NET

"Cannot initialize property or field node 'LocalTariffId' because the specified context is null." 

Я думал, синтаксис атрибута Я использую ниже будет использовать свойство LocalTariffId результата, когда он возвращается в кэш мои данные. Эта ошибка возникает, когда я пытаюсь войти в метод. Мне кажется, что он слишком быстро пытается получить доступ к этой собственности. Я должен упустить что-то, поэтому любой совет, который вы могли бы дать, очень ценится!

[CacheResult("AspNetCache", "'LocalTariff.Id=' + LocalTariffId", TimeToLive = "00:10:00")] 
public Domain.LocalTariffs.LocalTariff GetDefault(string agencyCode) 

Я также получаю странную ошибку после первой ошибки, я надеялся, что кто-то может пролить свет. Это связано с log4net, по крайней мере, я думаю, что это так. Моя регистрация работает, поэтому я не уверен, о чем идет речь.

IGCSoftware.HHG.Business.LocalTariffsFacade - Exception thrown in GetDefaultLocalTariff;GetDefaultLocalTariff;9c0bb393-369c-4501-a2ce-9325fe525e38;183341 ms 
<log4net.Error>Exception rendering object type [Spring.Core.NullValueInNestedPathException]<stackTrace>System.BadImageFormatException: The parameters and the signature of the method don't match. 
    at System.Reflection.RuntimeParameterInfo.GetParameters(IRuntimeMethodInfo methodHandle, MemberInfo member, Signature sig, ParameterInfo& returnParameter, Boolean fetchReturnParameter) 
    at System.Reflection.RuntimeMethodInfo.FetchNonReturnParameters() 
    at System.Reflection.RuntimeMethodInfo.GetParameters() 
    at System.Diagnostics.StackTrace.ToString(TraceFormat traceFormat) 
    at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 
    at System.Exception.GetStackTrace(Boolean needFileInfo) 
    at System.Exception.ToString(Boolean needFileLineInfo) 
    at System.Exception.ToString() 
    at log4net.ObjectRenderer.DefaultRenderer.RenderObject(RendererMap rendererMap, Object obj, TextWriter writer) 
    at log4net.ObjectRenderer.RendererMap.FindAndRender(Object obj, TextWriter writer)</stackTrace></log4net.Error> 

ответ

1

Вы не можете использовать возвращенный объект для генерации ключа атрибута CacheResult. Вы должны использовать параметры метода для генерации ключа (здесь «#agencyCode»).

+0

Bruno, относительно этого сообщения http://forum.springframework.net/showpost.php?p=10767&postcount=2 в нижней части вашего сообщения Я думал, что вы ссылаетесь на свойство возвращаемого объекта ([CacheResultItems («thingById», «Id»)] // Будет использовать Thing.Id в качестве ключа). Не могли бы вы объяснить это немного больше для меня? – avidgoffer

Смежные вопросы