CacheDuration в WebMethod игнорируется - PullRequest
4 голосов
/ 09 сентября 2011

Я пытаюсь кэшировать веб-метод веб-сервиса.Следуя документации, я попытался добавить атрибут CacheDuration и провел тест:

[WebMethod(CacheDuration = 180)]
public int TestCacheDuration()
{           
   return new Random().Next();
}

Для каждого вызова веб-метода у меня разный ответ, поэтому он не кэшируется.

Это нормально?

Спасибо за ваши ответы!

1 Ответ

3 голосов
/ 09 сентября 2011

Это ясно объясняется на форумах MSDN:

Есть две проблемы, которые могут повлиять на кэширование вывода в ASP.NET 2.0 Приложение веб-службы.

В ASP.NET 2.0 метод HTTP тестовой страницы изменился с GET ПОСТ. Однако сообщения POST обычно не кэшируются. Если вы измените тестовая страница в приложении веб-службы ASP.NET 2.0 для использования GET, кеширование работает правильно.

Кроме того, HTTP указывает, что пользовательский агент (браузер или вызывающий приложение) должно иметь возможность переопределить кэширование сервера, установив «Cache-Control» для «без кэширования». Поэтому приложения ASP.NET игнорируют кэшированные результаты, когда они находят заголовок «без кэширования».

а также:

Использовать элемент protocol под элементом webSerices в web.config:

http://msdn2.microsoft.com/en-us/library/ms228319(VS.85).aspx

источник: http://social.msdn.microsoft.com/forums/en-US/asmxandxml/thread/3765f1e2-0ff5-4840-afa2-e85b3d909cd1

...