Как запретить кэширование результатов веб-службы в веб-службе ASP.NET?

В моем приложении ASP.NET я заметил, что результаты любых вызовов веб-служб кэшируются. Я не хочу, чтобы результаты кэшировались, как я могу запретить браузеру кэшировать результаты?

Обновление:

Вот прокси-код, сгенерированный путем вызова URL-адреса веб-службы с добавлением '/ js', например /mywebservice.asmx/js

var MyWebService=function() {
MyWebService.initializeBase(this);
this._timeout = 0;
this._userContext = null;
this._succeeded = null;
this._failed = null;
}
MyWebService.prototype={
SomeWebMethod:function(itemID,succeededCallback, failedCallback, userContext) {
return this._invoke(MyWebService.get_path(), 'SomeWebMethod',false,
{itemID:itemID},succeededCallback,failedCallback,userContext); }}
MyWebService.registerClass('MyWebService',Sys.Net.WebServiceProxy);
MyWebService._staticInstance = new MyWebService();
MyWebService.set_path = function(value) { MyWebService._staticInstance._path = value; }
MyWebService.get_path = function() { return MyWebService._staticInstance._path; }
MyWebService.set_timeout = function(value) { MyWebService._staticInstance._timeout = value; }
MyWebService.get_timeout = function() { return MyWebService._staticInstance._timeout; }
MyWebService.set_defaultUserContext = function(value) { MyWebService._staticInstance._userContext = value; }
MyWebService.get_defaultUserContext = function() { return MyWebService._staticInstance._userContext; }
MyWebService.set_defaultSucceededCallback = function(value) { MyWebService._staticInstance._succeeded = value; }
MyWebService.get_defaultSucceededCallback = function() { return MyWebService._staticInstance._succeeded; }
MyWebService.set_defaultFailedCallback = function(value) { MyWebService._staticInstance._failed = value; }
MyWebService.get_defaultFailedCallback = function() { return MyWebService._staticInstance._failed; }
MyWebService.set_path("/MyWebService.asmx");
MyWebService.SomeWebMethod= function(itemID,onSuccess,onFailed,userContext)
{MyWebService._staticInstance.SomeWebMethod(itemID,onSuccess,onFailed,userContext); }

I, я вызываю службу с помощью:

MyWebService.SomeWebMethod(
itemID,
function(sender, e)
 {
    // do something
},
function(sender, e)
{
   // handle failure
});

Я использую предложенный метод (добавьте параметр к URL с некоторым случайным значением) с другими страницами, чтобы предотвратить их кэширование, но я удивлен, что мне нужно использовать эту технику с вызовом веб-службы, учитывая, что они являются вызовами POST по умолчанию в ASP.NET 2.0 и не должны быть кэшированным в первую очередь.

10
задан Azhar 24 August 2010 в 03:41
поделиться

4 ответа

как запретить браузеру кэшировать результаты?

Может быть, вы используете ASP.NET ajax? Если это так, то я думаю, вы имеете в виду, что вызовы ajax кешируются браузером. Если да, то взгляните на это: http://yoavniran.wordpress.com/2010/04/27/ie-caching-ajax-results-how-to-fix/ .

2
ответ дан 4 December 2019 в 03:14
поделиться

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

В частности, метод Javscript Date.getTime () :

var d = new Date();
var uniqueValue = d.getTicks();

// Now append uniqueValue to the querystring you're calling the webservice with
// and it'll ensure the request is treated as unique by the browsers cache
1
ответ дан 4 December 2019 в 03:14
поделиться

Если у вас есть контроль над сервером, посмотрите здесь для IIS7

В более старых версиях IIS добавьте

Cache-Control: no-cache 

в заголовки для файла ASMX/SVC (или для всего каталога)

3
ответ дан 4 December 2019 в 03:14
поделиться

Я думаю, вы используете IE... это лаваш в отношении управления кешем.

Заголовком управления кэшем можно управлять по запросу за запросом с помощью объекта ответа. Имейте в виду, что вы не можете изменить заголовок ответа после того, как вы выдали первый байт тела ответа.

0
ответ дан 4 December 2019 в 03:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: