0

他の VaryByParam の質問を見てみましたが、私の質問に対する答えを見つけることができませんでした。次のアクションが定義されている MVC サイトがあります。

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

    return Json(isAllowed, JsonRequestBehavior.AllowGet);
}

TargetID に何が入っても、キャッシュされた値が返されます。ただし、TargetIDbe に変更すると*、期待どおりに動作します (キャッシュされた値は によって異なります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の代わりに 使用すると機能しますが、 を使用すると機能するため、明らかに機能します。POSTPOST*

これは次のように動作し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