C# 受保护的覆盖IAsyncResult BeginExecute-端口转移到.net core

C# 受保护的覆盖IAsyncResult BeginExecute-端口转移到.net core,c#,asp.net-core,.net-core,asp.net-core-mvc,asp.net-core-2.0,C#,Asp.net Core,.net Core,Asp.net Core Mvc,Asp.net Core 2.0,我一直在将.net代码移植到.net core,其中有些领域很有挑战性。 MVC基本控制器覆盖方法就是这样一个领域 protected override IAsyncResult BeginExecute(System.Web.Routing.RequestContext requestContext, AsyncCallback callback, object state) { OpsManager.ActiveApplicationId = ApplicationId; r

我一直在将.net代码移植到.net core,其中有些领域很有挑战性。 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已被弃用。如何“修复”或替换此方法


我想您正在寻找
Controller
类上的
OnActionExecutionAsync
方法:

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

或者,如果您想对所有请求(不仅仅是单个控制器)应用一些逻辑,您可能需要研究。

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

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

或者,如果您想对所有请求(不仅仅是单个控制器)应用一些逻辑,您可能需要研究。

即使在“经典”ASP.NET MVC中,您也不需要这样的覆盖。如果您使用Application Insights support检查默认的ASP.NET MVC模板,您将看到应用程序ID和其他日志元数据是通过过滤器和扩展添加的,而不是通过硬编码的基本控制器添加的OpsManager是什么?我怀疑真正的问题应该是“如何在ASP.NET核心中使用OpsManager?”或“如何注入环境元数据”?再次检查默认模板如何处理Application InsightsGood注释。谢谢,即使在“经典”ASP.NET MVC中,您也不需要这样的覆盖。如果您使用Application Insights support检查默认的ASP.NET MVC模板,您将看到应用程序ID和其他日志元数据是通过过滤器和扩展添加的,而不是通过硬编码的基本控制器添加的OpsManager是什么?我怀疑真正的问题应该是“如何在ASP.NET核心中使用OpsManager?”或“如何注入环境元数据”?再次检查默认模板如何处理Application InsightsGood注释。感谢为我工作:-)为我工作:-)