Вот решение, которое я реализовал, на всякий случай, это помогает кому-то другому. Я не предлагаю его как идеальный, но в моем случае этот хак работал.
Как фон, страница, которая вызывает эта форма является SPA, так что здесь сегменты JavaScript, которые делают вызов
...
$("#mnuorder").click(function (e) {
e.preventDefault();
loadwholePage("Home/OrderStage");
});
...
function loadwholePage(saction) {
if (($("#FName") != undefined) && ($("#FName").length > 0)) {
abortValidation();
}
$("#frmmaincontainer").attr("action", saction);
$("#frmmaincontainer").submit();
}
здесь код позади. Условное значение позволяет мне отлаживать, но при запуске в безопасном режиме. PCODE является для обработки опциона QueryString параметр, который хранится на главной странице
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult OrderStage()
{
string pcode = Request["txtPromoCode"] ?? "";
if (pcode.Length > 0)
{
pcode = "?promocode=" + pcode;
}
#if !DEBUG
return Redirect("https://.../Home/Order"+pcode);
#else
return Redirect("http://localhost:63583/Home/Order"+pcode);
#endif
}
Наконец, здесь метод GET для заказа. Обратите внимание, что не имеет antiforgerytoken, но когда страница обслуживается, он начинает новую antiforgerytoken, и каждый метод с этого момента является HttpPost
#if !DEBUG
[RequireHttps]
#endif
public ActionResult Order(string promocode)
{
string ipaddr;
string binfo;
Models.Home.Order vm = new Models.Home.Order();
vm.PromoCode = promocode;
vm.ExpMoLst = Models.ExpireMo.GetExpireMo;
vm.ExpYrLst = Models.ExpireYr.GetExpireYr;
return View("Order", vm);
}
Я знаю, его немного рубить и я уверен, что есть лучшее решение, но, проведя пару часов в поисках, это то, что я придумал. Может быть, это поможет кому-то другому.
Я нашел «взломанный», который, кажется, исправить проблему. Я создал метод в моем контроллере, который получает запрос на защищенную страницу. Затем я перенаправляю на защищенную страницу, используя полный url ... https: // ... Чтобы он работал, мне пришлось удалить атрибут HttpPost и AntiForgery. Но как только результаты возвращаются, он снова начинает использовать токен AntiForgery, и каждое действие является действием Post. Его работа, просто надеюсь, что это не создаст проблемы для меня – edepperson