@@ -27,6 +27,37 @@ public FileStreamResultExecutor(ILoggerFactory loggerFactory)
27
27
28
28
/// <inheritdoc />
29
29
public virtual async Task ExecuteAsync ( ActionContext context , FileStreamResult result )
30
+ {
31
+ await ExecuteAsyncInternal (
32
+ context ,
33
+ result ,
34
+ SetHeadersAndLog ,
35
+ WriteFileAsync ,
36
+ Logger ) ;
37
+ }
38
+
39
+ /// <summary>
40
+ /// Write the contents of the FileStreamResult to the response body.
41
+ /// </summary>
42
+ /// <param name="context">The <see cref="ActionContext"/>.</param>
43
+ /// <param name="result">The FileStreamResult to write.</param>
44
+ /// <param name="range">The <see cref="RangeItemHeaderValue"/>.</param>
45
+ /// <param name="rangeLength">The range length.</param>
46
+ protected virtual Task WriteFileAsync (
47
+ ActionContext context ,
48
+ FileStreamResult result ,
49
+ RangeItemHeaderValue ? range ,
50
+ long rangeLength )
51
+ {
52
+ return WriteFileAsyncInternal ( context . HttpContext , result , range , rangeLength , Logger ) ;
53
+ }
54
+
55
+ internal static async Task ExecuteAsyncInternal < TContext > (
56
+ TContext context ,
57
+ FileStreamResult result ,
58
+ Func < TContext , FileStreamResult , long ? , bool , DateTimeOffset ? , EntityTagHeaderValue ? , ( RangeItemHeaderValue ? , long , bool ) > SetHeadersAndLog ,
59
+ Func < TContext , FileStreamResult , RangeItemHeaderValue ? , long , Task > WriteFileAsync ,
60
+ ILogger logger )
30
61
{
31
62
if ( context == null )
32
63
{
@@ -40,7 +71,7 @@ public virtual async Task ExecuteAsync(ActionContext context, FileStreamResult r
40
71
41
72
using ( result . FileStream )
42
73
{
43
- Logger . ExecutingFileResult ( result ) ;
74
+ logger . ExecutingFileResult ( result ) ;
44
75
45
76
long ? fileLength = null ;
46
77
if ( result . FileStream . CanSeek )
@@ -65,22 +96,6 @@ public virtual async Task ExecuteAsync(ActionContext context, FileStreamResult r
65
96
}
66
97
}
67
98
68
- /// <summary>
69
- /// Write the contents of the FileStreamResult to the response body.
70
- /// </summary>
71
- /// <param name="context">The <see cref="ActionContext"/>.</param>
72
- /// <param name="result">The FileStreamResult to write.</param>
73
- /// <param name="range">The <see cref="RangeItemHeaderValue"/>.</param>
74
- /// <param name="rangeLength">The range length.</param>
75
- protected virtual Task WriteFileAsync (
76
- ActionContext context ,
77
- FileStreamResult result ,
78
- RangeItemHeaderValue ? range ,
79
- long rangeLength )
80
- {
81
- return WriteFileAsyncInternal ( context . HttpContext , result , range , rangeLength , Logger ) ;
82
- }
83
-
84
99
internal static Task WriteFileAsyncInternal ( HttpContext httpContext , FileStreamResult result , RangeItemHeaderValue ? range , long rangeLength , ILogger logger )
85
100
{
86
101
if ( httpContext == null )
0 commit comments