あらまし
ajaxでActionMethodを呼び出して値をCookieに保存
↓
完了後にページ遷移させて、上記Cookieの値を参照
↓
変更が反映されてない!
原因
AJAXはレスポンスを参照せず、正常終了したか否かしか見てなかった。
なので成功時のActionResultは以下のように返していた。
return new HttpStatusCodeResult(HttpStatusCode.OK);
対処方法
ActionResultを以下のように書き換えた。
return Json("OK");
考察
検証はしていないが、おそらくクライアントに返却するレスポンスヘッダがnew HttpStatusCodeResult(HttpStatusCode.OK)では正しく生成されておらず、Cookieの書き換えが正常に行われていなかった。
Json("OK")ではレスポンスヘッダがきちんと生成されていてCookieの書き換えが正常に行なわれていたものと思われる。
結論
気軽にActionResultにnew HttpStatusCodeResult(HttpStatusCode.OK)を返してはいけない