На вашем месте я бы не стал полагаться на то, что служба размещена в IIS. Что, если вы хотите разместить свой сервис WCF с другой технологией? Я думаю, вы должны проверить memcached , который является гораздо более общим решением для кэширования, и он отлично работает с .NET.
В любом случае, если вы действительно хотите использовать кэш IIS, используйте System.Web.HttpRuntime.Cache вместо HttpContext.Current.Cache, поскольку HttpContext не всегда доступен.
Кроме того, как сказал cruizer , фактический тип ваших объектов совершенно не имеет значения, если они сериализуемы (то есть классы украшены с помощью [Serializable () ] атрибут). Сам кэш IIS не требует сериализуемых объектов, но WCF требует.