Выдача результатов кэширования службы REST, созданной с помощью ServiceStack и доступной через jQuery - PullRequest
1 голос
/ 13 марта 2012

У меня есть служба 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);
        }
    });

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

...