ASP.NET Web服务缓存

时间:2011-11-14 10:33:21

标签: c# asp.net web-services caching

只有当null作为参数传递时,是否可以缓存函数输出? 像这样:

[WebMethod(CacheDuration = 360, NullOnly = true)]
public SomeClass MyMethod(MyClass whatever)
{
    //do something...
    return something;
}

因此,无论== null,函数返回缓存的输出,当它不为null时,它会生成输出而不缓存它。

1 个答案:

答案 0 :(得分:1)

我不知道是否有更多的声明性方法,但您可以轻松地将结果缓存在常规缓存中并检查参数是否为null,如下所示:

public SomeClass MyMethod(MyClass whatever) 
{
    if(whatever == null)
    {
        SomeClass result = Cache["MyMethodCache"] as SomeClass;
        if(result != null)
        return result;
    }


    //do something...

    if(whatever == null)
    {
         Cache.Add("MyMethodCache",something, ... ); //duration, expiration policy, etc.
    }

    return something; 
} 

但是,即使通过缓存检索结果,此版本也需要序列化结果。