У меня есть служба REST, созданная с использованием ServiceStack, которую я использую в jQuery, запущенном в мобильном браузере.Все работает нормально, пока я не попытаюсь реализовать кэширование внутри службы с помощью MemoryCacheClient.Как только я вставляю код для кеширования результатов, я не получаю никакого ответа, возвращаемого в браузер.Когда я смотрю на запрос \ ответ в Fiddler, я получаю следующую ошибку:
Ответ закодирован и, возможно, должен быть декодирован перед проверкой.Нажмите здесь, чтобы преобразовать.
Если я просто получаю доступ к сервису напрямую из браузера, он работает нормально, проблема возникает только при доступе через метод .ajax в jQuery.
Вот сервискод
public override object OnGet(Products request)
{
string cacheKey =
UrnId.Create<ProductsService>("productCategoryType", request.ProductCategoryType.ToString());
return base.RequestContext.ToOptimizedResultUsingCache(this.CacheClient, cacheKey, () =>
{
//var service = this.ResolveService<ProductsService>();
ProductsResponse response = new ProductsResponse();
response.Products = GetLoanTypes(request.ProductCategoryType);
return response;
});
}
А потом Ajax
var serviceUrl = "http://local.standard.id.com/MobileServices/Products/";
var products = new Object();
products.ProductCategoryType = id;
$.ajax({
type: "GET",
contentType: "application/json",
url: serviceUrl,
data: products,
dataType: "jsonp",
success: function (data, textStatus) {
if (textStatus == "success") {
productData[id] = data;
displayProducts(data, id);
}
},
error: function (xhr, err) {
alert(err);
}
});
Как только я закомментирую кеширование в сервисе и просто всегда возвращаю необработанные результаты, все работает отлично.