Enable nullable annotations for Volo.Abp.AspNetCore

pull/17062/head
liangshiwei 2 years ago
parent 849ed53d53
commit 741461e6c2

@ -82,7 +82,7 @@ public static class AbpApplicationBuilderExtensions
}
public static IApplicationBuilder UseAbpRequestLocalization(this IApplicationBuilder app,
Action<RequestLocalizationOptions> optionsAction = null)
Action<RequestLocalizationOptions>? optionsAction = null)
{
app.ApplicationServices
.GetRequiredService<IAbpRequestLocalizationOptionsProvider>()

@ -17,7 +17,7 @@ public static class AbpAspNetCoreApplicationBuilderExtensions
/// <returns></returns>
public static IApplicationBuilder UseConfiguredEndpoints(
this IApplicationBuilder app,
Action<IEndpointRouteBuilder> additionalConfigurationAction = null)
Action<IEndpointRouteBuilder>? additionalConfigurationAction = null)
{
var options = app.ApplicationServices
.GetRequiredService<IOptions<AbpEndpointRouterOptions>>()

@ -7,7 +7,7 @@ namespace Microsoft.AspNetCore.Builder;
public static class VirtualFileSystemApplicationBuilderExtensions
{
[Obsolete("Use UseStaticFiles() instead. UseVirtualFiles is not needed anymore.")]
public static IApplicationBuilder UseVirtualFiles(this IApplicationBuilder app, Action<StaticFileOptions> configure = null)
public static IApplicationBuilder UseVirtualFiles(this IApplicationBuilder app, Action<StaticFileOptions>? configure = null)
{
if (configure != null)
{

@ -7,7 +7,7 @@ public static class AbpHostingEnvironmentExtensions
{
public static IConfigurationRoot BuildConfiguration(
this IWebHostEnvironment env,
AbpConfigurationBuilderOptions options = null)
AbpConfigurationBuilderOptions? options = null)
{
options ??= new AbpConfigurationBuilderOptions();

@ -28,7 +28,7 @@ public static class ResponseContentTypeHelper
string? actionResultContentType,
string? httpResponseContentType,
(string defaultContentType, Encoding defaultEncoding) @default,
Func<string, Encoding> getEncoding,
Func<string, Encoding?> getEncoding,
out string resolvedContentType,
out Encoding resolvedContentTypeEncoding)
{
@ -66,7 +66,7 @@ public static class ResponseContentTypeHelper
resolvedContentTypeEncoding = defaultContentTypeEncoding;
}
public static Encoding GetEncoding(string mediaType)
public static Encoding? GetEncoding(string mediaType)
{
if (MediaTypeHeaderValue.TryParse(mediaType, out var parsed))
{

@ -7,7 +7,7 @@ namespace Microsoft.AspNetCore.RequestLocalization;
public class AbpRequestLocalizationOptionsManager : AbpDynamicOptionsManager<RequestLocalizationOptions>
{
private RequestLocalizationOptions _options;
private RequestLocalizationOptions? _options;
private readonly IAbpRequestLocalizationOptionsProvider _abpRequestLocalizationOptionsProvider;
@ -19,7 +19,7 @@ public class AbpRequestLocalizationOptionsManager : AbpDynamicOptionsManager<Req
_abpRequestLocalizationOptionsProvider = abpRequestLocalizationOptionsProvider;
}
public override RequestLocalizationOptions Get(string name)
public override RequestLocalizationOptions Get(string? name)
{
return _options ?? base.Get(name);
}

@ -19,8 +19,8 @@ public class DefaultAbpRequestLocalizationOptionsProvider : IAbpRequestLocalizat
{
private readonly IServiceScopeFactory _serviceProviderFactory;
private readonly SemaphoreSlim _syncSemaphore;
private Action<RequestLocalizationOptions> _optionsAction;
private RequestLocalizationOptions _requestLocalizationOptions;
private Action<RequestLocalizationOptions>? _optionsAction;
private RequestLocalizationOptions? _requestLocalizationOptions;
public DefaultAbpRequestLocalizationOptionsProvider(IServiceScopeFactory serviceProviderFactory)
{
@ -28,7 +28,7 @@ public class DefaultAbpRequestLocalizationOptionsProvider : IAbpRequestLocalizat
_syncSemaphore = new SemaphoreSlim(1, 1);
}
public void InitLocalizationOptions(Action<RequestLocalizationOptions> optionsAction = null)
public void InitLocalizationOptions(Action<RequestLocalizationOptions>? optionsAction = null)
{
_optionsAction = optionsAction;
}
@ -85,7 +85,7 @@ public class DefaultAbpRequestLocalizationOptionsProvider : IAbpRequestLocalizat
return _requestLocalizationOptions;
}
private static RequestCulture DefaultGetRequestCulture(string defaultLanguage, IReadOnlyList<LanguageInfo> languages)
private static RequestCulture DefaultGetRequestCulture(string? defaultLanguage, IReadOnlyList<LanguageInfo> languages)
{
if (defaultLanguage == null)
{

@ -6,7 +6,7 @@ namespace Microsoft.AspNetCore.RequestLocalization;
public interface IAbpRequestLocalizationOptionsProvider
{
void InitLocalizationOptions(Action<RequestLocalizationOptions> optionsAction = null);
void InitLocalizationOptions(Action<RequestLocalizationOptions>? optionsAction = null);
Task<RequestLocalizationOptions> GetLocalizationOptionsAsync();
}

@ -47,7 +47,7 @@ public static class CookieAuthenticationOptionsExtensions
var response = await openIdConnectOptions.Backchannel.IntrospectTokenAsync(new TokenIntrospectionRequest
{
Address = openIdConnectOptions.Configuration?.IntrospectionEndpoint ?? openIdConnectOptions.Authority.EnsureEndsWith('/') + "connect/introspect",
Address = openIdConnectOptions.Configuration?.IntrospectionEndpoint ?? openIdConnectOptions.Authority!.EnsureEndsWith('/') + "connect/introspect",
ClientId = openIdConnectOptions.ClientId,
ClientSecret = openIdConnectOptions.ClientSecret,
Token = accessToken

@ -5,15 +5,15 @@ namespace Microsoft.Extensions.DependencyInjection;
internal class EmptyHostingEnvironment : IWebHostEnvironment
{
public string EnvironmentName { get; set; }
public string EnvironmentName { get; set; } = default!;
public string ApplicationName { get; set; }
public string ApplicationName { get; set; } = default!;
public string WebRootPath { get; set; }
public string WebRootPath { get; set; } = default!;
public IFileProvider WebRootFileProvider { get; set; }
public IFileProvider WebRootFileProvider { get; set; } = default!;
public string ContentRootPath { get; set; }
public string ContentRootPath { get; set; } = default!;
public IFileProvider ContentRootFileProvider { get; set; }
public IFileProvider ContentRootFileProvider { get; set; } = default!;
}

@ -11,7 +11,7 @@ public static class WebApplicationBuilderExtensions
{
public static async Task<IAbpApplicationWithExternalServiceProvider> AddApplicationAsync<TStartupModule>(
[NotNull] this WebApplicationBuilder builder,
[CanBeNull] Action<AbpApplicationCreationOptions> optionsAction = null)
Action<AbpApplicationCreationOptions>? optionsAction = null)
where TStartupModule : IAbpModule
{
return await builder.Services.AddApplicationAsync<TStartupModule>(options =>
@ -28,7 +28,7 @@ public static class WebApplicationBuilderExtensions
public static async Task<IAbpApplicationWithExternalServiceProvider> AddApplicationAsync(
[NotNull] this WebApplicationBuilder builder,
[NotNull] Type startupModuleType,
[CanBeNull] Action<AbpApplicationCreationOptions> optionsAction = null)
Action<AbpApplicationCreationOptions>? optionsAction = null)
{
return await builder.Services.AddApplicationAsync(startupModuleType, options =>
{

@ -5,6 +5,8 @@
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<AssemblyName>Volo.Abp.AspNetCore</AssemblyName>
<PackageId>Volo.Abp.AspNetCore</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>

@ -12,7 +12,7 @@ public static class ApplicationInitializationContextExtensions
{
public static IApplicationBuilder GetApplicationBuilder(this ApplicationInitializationContext context)
{
return context.ServiceProvider.GetRequiredService<IObjectAccessor<IApplicationBuilder>>().Value;
return context.ServiceProvider.GetRequiredService<IObjectAccessor<IApplicationBuilder>>().Value!;
}
public static IWebHostEnvironment GetEnvironment(this ApplicationInitializationContext context)
@ -20,8 +20,7 @@ public static class ApplicationInitializationContextExtensions
return context.ServiceProvider.GetRequiredService<IWebHostEnvironment>();
}
[CanBeNull]
public static IWebHostEnvironment GetEnvironmentOrNull(this ApplicationInitializationContext context)
public static IWebHostEnvironment? GetEnvironmentOrNull(this ApplicationInitializationContext context)
{
return context.ServiceProvider.GetService<IWebHostEnvironment>();
}

@ -2,5 +2,5 @@
public class AbpAuthorizationExceptionHandlerOptions
{
public string AuthenticationScheme { get; set; }
public string? AuthenticationScheme { get; set; }
}

@ -17,11 +17,11 @@ public class DefaultAbpAuthorizationExceptionHandler : IAbpAuthorizationExceptio
var isAuthenticated = httpContext.User.Identity?.IsAuthenticated ?? false;
var authenticationSchemeProvider = httpContext.RequestServices.GetRequiredService<IAuthenticationSchemeProvider>();
AuthenticationScheme scheme = null;
AuthenticationScheme? scheme = null;
if (!handlerOptions.AuthenticationScheme.IsNullOrWhiteSpace())
{
scheme = await authenticationSchemeProvider.GetSchemeAsync(handlerOptions.AuthenticationScheme);
scheme = await authenticationSchemeProvider.GetSchemeAsync(handlerOptions.AuthenticationScheme!);
if (scheme == null)
{
throw new AbpException($"No authentication scheme named {handlerOptions.AuthenticationScheme} was found.");

@ -32,7 +32,7 @@ public class DefaultHttpExceptionStatusCodeFinder : IHttpExceptionStatusCodeFind
if (exception is IHasErrorCode exceptionWithErrorCode &&
!exceptionWithErrorCode.Code.IsNullOrWhiteSpace())
{
if (Options.ErrorCodeToHttpStatusCodeMappings.TryGetValue(exceptionWithErrorCode.Code, out var status))
if (Options.ErrorCodeToHttpStatusCodeMappings.TryGetValue(exceptionWithErrorCode.Code!, out var status))
{
return status;
}
@ -40,7 +40,7 @@ public class DefaultHttpExceptionStatusCodeFinder : IHttpExceptionStatusCodeFind
if (exception is AbpAuthorizationException)
{
return httpContext.User.Identity.IsAuthenticated
return httpContext.User.Identity!.IsAuthenticated
? HttpStatusCode.Forbidden
: HttpStatusCode.Unauthorized;
}

@ -32,7 +32,7 @@ public class AbpSecurityHeadersMiddleware : IMiddleware, ITransientDependency
AddHeader(context, "X-Frame-Options", "SAMEORIGIN");
var requestAcceptTypeHtml = context.Request.Headers["Accept"].Any(x =>
x.Contains("text/html") || x.Contains("*/*") || x.Contains("application/xhtml+xml"));
x!.Contains("text/html") || x.Contains("*/*") || x.Contains("application/xhtml+xml"));
var endpoint = context.GetEndpoint();
@ -109,7 +109,7 @@ public class AbpSecurityHeadersMiddleware : IMiddleware, ITransientDependency
protected virtual string BuildContentSecurityPolicyValue(HttpContext context)
{
var cspValue = Options.Value.ContentSecurityPolicyValue.IsNullOrWhiteSpace() ? DefaultValue : Options.Value.ContentSecurityPolicyValue;
var cspValue = Options.Value.ContentSecurityPolicyValue.IsNullOrWhiteSpace() ? DefaultValue : Options.Value.ContentSecurityPolicyValue!;
if (!(Options.Value.UseContentSecurityPolicyScriptNonce &&
context.Items.TryGetValue(AbpAspNetCoreConsts.ScriptNonceKey, out var nonce) &&
nonce is string nonceValue && !string.IsNullOrEmpty(nonceValue)))
@ -128,7 +128,7 @@ public class AbpSecurityHeadersMiddleware : IMiddleware, ITransientDependency
}
var newScriptSrcValue = scriptSrcValue + nonceStr;
return Options.Value.ContentSecurityPolicyValue.Replace(scriptSrcValue, newScriptSrcValue);
return Options.Value.ContentSecurityPolicyValue!.Replace(scriptSrcValue!, newScriptSrcValue);
}

@ -11,7 +11,7 @@ public class AbpSecurityHeadersOptions
public bool UseContentSecurityPolicyScriptNonce { get; set; }
public string ContentSecurityPolicyValue { get; set; }
public string? ContentSecurityPolicyValue { get; set; }
public Dictionary<string, string> Headers { get; }

@ -38,14 +38,14 @@ public class AbpCorrelationIdMiddleware : IMiddleware, ITransientDependency
protected virtual string GetCorrelationIdFromRequest(HttpContext context)
{
string correlationId = context.Request.Headers[_options.HttpHeaderName];
string? correlationId = context.Request.Headers[_options.HttpHeaderName];
if (correlationId.IsNullOrEmpty())
{
correlationId = Guid.NewGuid().ToString("N");
context.Request.Headers[_options.HttpHeaderName] = correlationId;
}
return correlationId;
return correlationId!;
}
protected virtual void CheckAndSetCorrelationIdOnResponse(

@ -18,14 +18,14 @@ public class AbpFileExtensionContentTypeProvider : IContentTypeProvider, ITransi
var extension = GetExtension(subpath);
if (extension == null)
{
contentType = null;
contentType = null!;
return false;
}
return Options.ContentTypeMaps.TryGetValue(extension, out contentType);
return Options.ContentTypeMaps.TryGetValue(extension, out contentType!);
}
protected virtual string GetExtension(string path)
protected virtual string? GetExtension(string path)
{
if (string.IsNullOrWhiteSpace(path))
{

@ -16,7 +16,7 @@ public class RazorViewEngineVirtualFileProvider : IFileProvider
{
_serviceProviderAccessor = serviceProviderAccessor;
_fileProvider = new Lazy<IFileProvider>(
() => serviceProviderAccessor.Value.GetRequiredService<IVirtualFileProvider>(),
() => serviceProviderAccessor.Value!.GetRequiredService<IVirtualFileProvider>(),
true
);
}

@ -18,16 +18,16 @@ public class HttpContextWebClientInfoProvider : IWebClientInfoProvider, ITransie
HttpContextAccessor = httpContextAccessor;
}
public string BrowserInfo => GetBrowserInfo();
public string? BrowserInfo => GetBrowserInfo();
public string ClientIpAddress => GetClientIpAddress();
public string? ClientIpAddress => GetClientIpAddress();
protected virtual string GetBrowserInfo()
protected virtual string? GetBrowserInfo()
{
return HttpContextAccessor.HttpContext?.Request?.Headers?["User-Agent"];
}
protected virtual string GetClientIpAddress()
protected virtual string? GetClientIpAddress()
{
try
{

@ -2,7 +2,7 @@
public interface IWebClientInfoProvider
{
string BrowserInfo { get; }
string? BrowserInfo { get; }
string ClientIpAddress { get; }
string? ClientIpAddress { get; }
}

@ -7,8 +7,7 @@ namespace Volo.Abp;
public static class ServiceProviderAccessorExtensions
{
[CanBeNull]
public static HttpContext GetHttpContext(this IServiceProviderAccessor serviceProviderAccessor)
public static HttpContext? GetHttpContext(this IServiceProviderAccessor serviceProviderAccessor)
{
return serviceProviderAccessor.ServiceProvider.GetRequiredService<IHttpContextAccessor>().HttpContext;
}

Loading…
Cancel
Save