У меня возникают проблемы при работе кэширования с использованием varByParam, когда я также использую UriTemplate для службы RESTful WCF.Однако varByParam работает правильно, когда я использую обычные параметры строки запроса.
[OperationContract]
[WebGet(UriTemplate = "/{appId}/CacheTest/{param}")]
[WebCache(Duration=300, VaryByParam="param")]
string CacheTest(string appId, string param);
Все, что делает CacheTest - возвращает текущее время.Я называю это следующими комбинациями: /1/CacheTest/1
, /2/CacheTest/1
, /1/CacheTest/2
, /2/CacheTest/2
.Каждый вызов возвращает разное время.
Когда я делаю это:
[OperationContract]
[WebGet]
[WebCache(Duration=300, VaryByParam="param")]
string CacheTest(string appId, string param);
Оба /CacheTest?appId=1¶m=1
и /CacheTest?appId=2¶m=1
возвращают одинаковое время.То же самое верно для /CacheTest?appId=1¶m=2
и /CacheTest?appId=2¶m=2
.
Как я могу заставить первый случай вести себя как второй случай?Я пробовал VaryByCustom, но у меня нет доступа к параметрам внутри моего GetVaryByCustomString, если они не находятся в строке запроса.