Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Asp.net webforms with web.api中的属性重定向到网页_C#_Asp.net_Asp.net Web Api_Attributes - Fatal编程技术网

C# 使用Asp.net webforms with web.api中的属性重定向到网页

C# 使用Asp.net webforms with web.api中的属性重定向到网页,c#,asp.net,asp.net-web-api,attributes,C#,Asp.net,Asp.net Web Api,Attributes,我创建此属性类是为了重定向到网页url: using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web; using UtilityLibrary; namespace xxxxxxx.Web.Attributes { public class SessionExpireWebApiFilterAt

我创建此属性类是为了重定向到网页url:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web;
using UtilityLibrary;

namespace xxxxxxx.Web.Attributes
{

    public class SessionExpireWebApiFilterAttribute : System.Web.Http.Filters.ActionFilterAttribute
    {
        public string UrlPortal { get { return System.Configuration.ConfigurationManager.AppSettings["Portal"].ToString(); } }

        public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext filterContext)
        {    
            try
            {                 
                if (StateManager.Instance.Get(Key.Autenticacao, State.Session) == null)
                {                        
                    filterContext.Response = new HttpResponseMessage(HttpStatusCode.RedirectMethod);
                    filterContext.Response.Headers.Location = new Uri(http://www.examplepage.com);

                }

                base.OnActionExecuting(filterContext);
            }
            catch (Exception ex)
            {    
                throw;
            }
        }
    }
}

但是什么也没发生,我使用属性的方法没有异常,但是页面以状态200完成了帖子!有人能帮我吗?

看起来您正在使用OnActionExecuting,它是在action方法之前调用的。使用OnResultExecuting或OnResultExecuted

对不起,我搞错了。 我认为你可以做到:

    public override void OnActionExecuting(ActionExecutingContext filterContext)
{ 
    filterContext.Result = new RedirectResult(url);
    return;   
 }
我认为你的代码中的这个补丁会对你有帮助。 公共类SessionExpireWebApilterAttribute:System.Web.Http.Filters.ActionFilterAttribute { 公共字符串UrlPortal{get{return System.Configuration.ConfigurationManager.AppSettings[“Portal”].ToString();}}


好的,但我需要在actionresult之前执行属性。如果会话结束,我需要在webapi控制器上验证会话并重定向到home。
        public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext filterContext)
        {    
            try
            {                 
                if (StateManager.Instance.Get(Key.Autenticacao, State.Session) == null)
                {                        
                    filterContext.Response = new HttpResponseMessage(HttpStatusCode.RedirectMethod);
                    filterContext.Response.Headers.Location = new Uri(http://www.examplepage.com);
                    /*add this return*/return;
                }

                base.OnActionExecuting(filterContext);
            }
            catch (Exception ex)
            {    
                throw;
            }
        }
    }