Skip to content

Commit d5116df

Browse files
Handle possible NRE. Fixes #837
1 parent e26bbe1 commit d5116df

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

src/Common/src/Common/DefaultApiVersionReporter.cs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ public void Report( HttpResponse response, ApiVersionModel apiVersionModel )
6262
AddApiVersionHeader( headers, ApiDeprecatedVersions, apiVersionModel.DeprecatedApiVersions );
6363

6464
#if NETFRAMEWORK
65-
var request = response.RequestMessage;
6665
var statusCode = (int) response.StatusCode;
6766
#else
6867
var context = response.HttpContext;
@@ -75,13 +74,23 @@ public void Report( HttpResponse response, ApiVersionModel apiVersionModel )
7574
}
7675

7776
#if NETFRAMEWORK
78-
var dependencyResolver = request.GetConfiguration().DependencyResolver;
79-
var policyManager = dependencyResolver.GetSunsetPolicyManager();
80-
var name = request.GetActionDescriptor().GetApiVersionMetadata().Name;
77+
if ( response.RequestMessage is not HttpRequestMessage request ||
78+
request.GetActionDescriptor()?.GetApiVersionMetadata() is not ApiVersionMetadata metadata )
79+
{
80+
return;
81+
}
82+
83+
var name = metadata.Name;
84+
var policyManager = request.GetConfiguration().DependencyResolver.GetSunsetPolicyManager();
8185
var version = request.GetRequestedApiVersion();
8286
#else
87+
if ( context.GetEndpoint()?.Metadata.GetMetadata<ApiVersionMetadata>() is not ApiVersionMetadata metadata )
88+
{
89+
return;
90+
}
91+
92+
var name = metadata.Name;
8393
var policyManager = context.RequestServices.GetRequiredService<ISunsetPolicyManager>();
84-
var name = context.GetEndpoint()!.Metadata.GetMetadata<ApiVersionMetadata>()?.Name;
8594
var version = context.GetRequestedApiVersion();
8695
#endif
8796

0 commit comments

Comments
 (0)