用于会话的JavaScript调用控制器无法正常工作

时间:2017-12-13 18:20:20

标签: javascript c# asp.net

我正在调用重定向网址的controllerUsercontroller.csClearSessionAnCoodkies方法。 我已为此httpget方法ClearSessionAndCookies()添加了路由。

使用JQuery调用控制器方法来清除会话变量并重定向到主页。

由于某种原因,呼叫失败并且没有重定向到主页。

应用程序说找不到404页面。不确定呼叫失败的原因:(

    The following is the controller, router, and asp.net call
    ----------

    **UserController.cs**

        [HttpGet]
            public IHttpActionResult ClearSessionAndCookies()
            {
                HttpContext.Current.Session.Clear();
                HttpContext.Current.Session.Abandon();
                HttpContext.Current.Session.RemoveAll();
                var host = Request.RequestUri.GetLeftPart(UriPartial.Authority); 

                return Redirect(host + "/cp");     
            }

    **Routing**

        RouteTable.Routes.MapHttpRoute(
                   name: "User",
                   routeTemplate: "api/User",
                   defaults: new { action = "ClearSessionAndCookies", controller = "User" }
               );

    **JavaScirpt**

    function RedirectToWelcomePage() {
        message = "Session expired. You will be redirected to home page.";
        $('#sessionTimeoutTitle').text(message);
        $('#sessionTimeoutModal').modal('show');

        var url = 'api/User/ClearSessionAndCookies';

            $.post(url, function (res) {
                if (res.Success) {
                    sessionStorage.clear();
                    window.location.href = res.RedirectUrl;
                }
            });     }

2 个答案:

答案 0 :(得分:0)

您的路线图表明,如果用户点击RunHiddenConsole.exe,则会调用api/User。如果您想要在网址中执行操作,则可能需要更新路由。

我强烈推荐路线属性,因为它们更清洁,准备就绪。 https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing

答案 1 :(得分:0)

问题在于您将该操作声明为Get,然后使用帖子调用此方法。

[HTTPGET] public IHttpActionResult ClearSessionAndCookies()

$ .post(url,function(res){

删除[HttpGet]属性,这将有效。