【问题标题】:protected override IAsyncResult BeginExecute - port over to .net core受保护的覆盖 IAsyncResult BeginExecute - 移植到 .net 核心
【发布时间】:2019-01-08 07:24:03
【问题描述】:

我一直在将 .net 代码移植到 .net 核心,并且有些领域具有挑战性。 一个这样的区域是在 MVC 基本控制器覆盖方法中

protected override IAsyncResult BeginExecute(System.Web.Routing.RequestContext requestContext, AsyncCallback callback, object state)
{
    OpsManager.ActiveApplicationId = ApplicationId;
    return base.BeginExecute(requestContext, callback, state);
}

我收集到很多旧的 System.Web.MVC 已被弃用。如何“修复”或替换此方法?

【问题讨论】:

  • 即使在“经典”ASP.NET MVC 中,您也不需要需要这样的覆盖。如果您检查具有 Application Insights 支持的默认 ASP.NET MVC 模板,您将看到应用程序 ID 和其他日志记录元数据是通过过滤器和扩展添加的,不是通过硬编码的基本控制器
  • 什么是 OpsManager?我怀疑 真正的 问题应该是“如何在 ASP.NET Core 中使用 OpsManager?”或“我如何注入环境元数据”?再次检查默认模板如何处理 Application Insights
  • 好的cmets。谢谢

标签: c# asp.net-core .net-core asp.net-core-mvc asp.net-core-2.0


【解决方案1】:

我认为您正在寻找 OnActionExecutionAsync 类上的 OnActionExecutionAsync 方法:

public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
    // Do something...
    await base.OnActionExecutionAsync(context, next);
}

或者,如果您想将一些逻辑应用于所有请求(不仅仅是单个控制器),您可能需要查看middleware

【讨论】:

  • 为我工作:-)
猜你喜欢
  • 2016-04-10
  • 1970-01-01
  • 2013-07-01
  • 2017-02-10
  • 1970-01-01
  • 2022-11-21
  • 2011-08-04
  • 2015-10-01
  • 1970-01-01
相关资源
最近更新 更多