C# 使用Asp.net webforms with web.api中的属性重定向到网页
我创建此属性类是为了重定向到网页url: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
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;
}
}
}