发布使用ServiceStack创建并通过jQuery访问的REST服务的缓存结果

时间:2012-03-13 13:59:31

标签: servicestack

我有一个使用ServiceStack创建的REST服务,我正在使用移动浏览器中运行的jQuery。一切正常,直到我尝试使用MemoryCacheClient在服务中实现缓存。只要我插入代码来缓存结果,我就不会将任何响应返回给浏览器。当我在Fiddler中查看请求\响应时,我收到以下错误:

响应已编码,可能需要在检查前进行解码。点击此处进行转换。

如果我只是直接从浏览器访问该服务它工作正常,在jQuery中通过.ajax方法访问时似乎只是一个问题。

这是服务代码

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);
        }
    });

一旦我在服务中注释掉缓存并且总是返回原始结果,一切正常。

0 个答案:

没有答案