Share via

/1[], String, TraceLevel, String, String, Action<TraceRecord>, Func<Task<TResult>>, Action<TraceRecord, TResult>, Action<TraceRecord>)

Traces both a begin and an end trace around a specified operation.

Namespace:  System.Web.Http.Tracing
Assembly:  System.Web.Http (in System.Web.Http.dll)


<ExtensionAttribute> _
Public Shared Function TraceBeginEndAsync(Of TResult) ( _
    traceWriter As ITraceWriter, _
    request As HttpRequestMessage, _
    category As String, _
    level As TraceLevel, _
    operatorName As String, _
    operationName As String, _
    beginTrace As Action(Of TraceRecord), _
    execute As Func(Of Task(Of TResult)), _
    endTrace As Action(Of TraceRecord, TResult), _
    errorTrace As Action(Of TraceRecord) _
) As Task(Of TResult)
Dim traceWriter As ITraceWriter 
Dim request As HttpRequestMessage 
Dim category As String 
Dim level As TraceLevel 
Dim operatorName As String 
Dim operationName As String 
Dim beginTrace As Action(Of TraceRecord)
Dim execute As Func(Of Task(Of TResult))
Dim endTrace As Action(Of TraceRecord, TResult)
Dim errorTrace As Action(Of TraceRecord)
Dim returnValue As Task(Of TResult)

returnValue = traceWriter.TraceBeginEndAsync(request, _
    category, level, operatorName, operationName, _
    beginTrace, execute, endTrace, errorTrace)
public static Task<TResult> TraceBeginEndAsync<TResult>(
    this ITraceWriter traceWriter,
    HttpRequestMessage request,
    string category,
    TraceLevel level,
    string operatorName,
    string operationName,
    Action<TraceRecord> beginTrace,
    Func<Task<TResult>> execute,
    Action<TraceRecord, TResult> endTrace,
    Action<TraceRecord> errorTrace
generic<typename TResult>
static Task<TResult>^ TraceBeginEndAsync(
    ITraceWriter^ traceWriter, 
    HttpRequestMessage^ request, 
    String^ category, 
    TraceLevel level, 
    String^ operatorName, 
    String^ operationName, 
    Action<TraceRecord^>^ beginTrace, 
    Func<Task<TResult>^>^ execute, 
    Action<TraceRecord^, TResult>^ endTrace, 
    Action<TraceRecord^>^ errorTrace
static member TraceBeginEndAsync : 
        traceWriter:ITraceWriter * 
        request:HttpRequestMessage * 
        category:string * 
        level:TraceLevel * 
        operatorName:string * 
        operationName:string * 
        beginTrace:Action<TraceRecord> * 
        execute:Func<Task<'TResult>> * 
        endTrace:Action<TraceRecord, 'TResult> * 
        errorTrace:Action<TraceRecord> -> Task<'TResult> 
JScript does not support generic types and methods.

Type Parameters

  • TResult
    The type of result produced by the Task.


  • request
    Type: HttpRequestMessage

    The HttpRequestMessage with which to associate the trace. It may be null.

  • category
    Type: System.String

    The logical category of the trace.

  • operatorName
    Type: System.String

    The name of the object performing the operation. It may be null.

  • operationName
    Type: System.String

    The name of the operation being performed. It may be null.

  • execute
    Type: System.Func<Task<TResult>>

    An <see cref="T:System.Func`1" /> that returns the Task that will perform the operation.

  • endTrace
    Type: System.Action<TraceRecord, TResult>

    The Action to invoke after successfully performing the operation, allowing the given TraceRecord to be filled in. The result of the completed task will also be passed to this action. This action may be null.

Return Value

Type: System.Threading.Tasks.Task<TResult>
The Task returned by the operation.

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type ITraceWriter. When you use instance method syntax to call this method, omit the first parameter. For more information, see or


The end trace will occur when the asynchronous operation completes, either success or failure.

See Also


ITraceWriterExtensions Class

TraceBeginEndAsync Overload

System.Web.Http.Tracing Namespace