0

我已经查看了其他 VaryByParam 问题,但我无法找到我的问题的答案。我有一个定义了以下操作的 MVC 站点:

[OutputCache(Duration = 30, VaryByParam = "TargetID")]
public JsonResult IsThingAllowed(int TargetID)
{
    bool isAllowed = IsAllowed(TargetID);

    return Json(isAllowed, JsonRequestBehavior.AllowGet);
}

无论 TargetID 是什么,都会返回缓存的值。但是,如果我更改TargetID*,它将按预期工作(缓存值因 而异TargetID):

[OutputCache(Duration = 30, VaryByParam = "*")]

这是 AJAX 调用:

$.ajax({
    url: "/MyController/IsThingAllowed",
    type: "POST",
    data: JSON.stringify({ "TargetID": id }), // This is definitely varying!
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    success: function (data, textStatus, xhr) {

        updateThing(data);
    },
    error: function (xhr, textStatus, error) {

    }
});

显式命名参数时我做错了什么?

编辑: 如果我们使用GET而不是POST.. 则有效,但POST显然有效,因为它在我们使用时有效*

这是它的工作原理GET

 $.ajax({
     url: "/MyController/IsThingAllowed",
     type: "GET",
     data: { TargetID: id },
     dataType: "json",
     contentType: "application/json; charset=utf-8",
     success: function (data, textStatus, xhr) {

         updateThing(data);
     },
     error: function (xhr, textStatus, error) {

     }
 });
4

0 回答 0