gpt4 book ai didi

asp.net - 从 Web API 之外的 ActionFilter 或 ASP.NET MVC Web Controller 获取 HttpRequestMessage

转载 作者:行者123 更新时间:2023-12-04 21:33:47 25 4
gpt4 key购买 nike

我有一段时间试图获取 HttpRequestMessage 的实例,以便我可以将它传递给方法 GetCacheOutputProvider下面来自 ActionFilter 和/或普通的 ASP.NET MVC Controller 。我知道我可以从 Web API 中获取,但是这些实例呢?

public class CacheResetFilter : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
var cache = GlobalConfiguration.Configuration.CacheOutputConfiguration().GetCacheOutputProvider(HTTPREQUESTMESSAGE);
cache.Contains("eventid=" + eventId);

base.OnActionExecuted(filterContext);
}

最佳答案

1.在 MVC Controller 中,您可以这样做:

public class HomeController : Controller
{
public ActionResult Test()
{
HttpRequestMessage httpRequestMessage =
HttpContext.Items["MS_HttpRequestMessage"] as HttpRequestMessage;
return View();
}
}

2.在操作过滤器中,您可以执行以下操作:
public class HttpRequestMessageAttribute : System.Web.Mvc.ActionFilterAttribute
{
public override void OnActionExecuted(System.Web.Mvc.ActionExecutedContext filterContext)
{
HttpRequestMessage httpRequestMessage =
filterContext.HttpContext.Items["MS_HttpRequestMessage"] as HttpRequestMessage;
//var cache = GlobalConfiguration.Configuration.CacheOutputConfiguration().GetCacheOutputProvider(httpRequestMessage);
//cache.Contains("eventid=" + eventId);

base.OnActionExecuted(filterContext);
}
}


    public class HttpRequestMessageAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpRequestMessage httpRequestMessage =
filterContext.HttpContext.Items["MS_HttpRequestMessage"] as HttpRequestMessage;

base.OnActionExecuting(filterContext);
}
}

希望对你有帮助。

关于asp.net - 从 Web API 之外的 ActionFilter 或 ASP.NET MVC Web Controller 获取 HttpRequestMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43920334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com