From 4ac7b3bc0f2f2ca0af0a7b0f2607a7f684a79721 Mon Sep 17 00:00:00 2001 From: wangjun Date: Thu, 26 Aug 2021 15:35:54 +0800 Subject: [PATCH 1/3] Fix object reference not set to an instance of an object for http proxy --- .../Volo/Abp/Http/Client/DynamicProxying/UrlBuilder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/UrlBuilder.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/UrlBuilder.cs index 4d77423c7f..78747dd6b0 100644 --- a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/UrlBuilder.cs +++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/UrlBuilder.cs @@ -139,7 +139,7 @@ namespace Volo.Abp.Http.Client.DynamicProxying return dateTimeValue.ToUniversalTime().ToString("O"); } - return value.ToString(); + return value?.ToString(); } } } From 7781e8642b999f86392eaea71ad4b63bfbe45ed5 Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 26 Aug 2021 21:34:56 +0800 Subject: [PATCH 2/3] Update UrlBuilder.cs --- .../Volo/Abp/Http/Client/DynamicProxying/UrlBuilder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/UrlBuilder.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/UrlBuilder.cs index 78747dd6b0..2a990c70d6 100644 --- a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/UrlBuilder.cs +++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/UrlBuilder.cs @@ -132,7 +132,7 @@ namespace Volo.Abp.Http.Client.DynamicProxying return true; } - private static string ConvertValueToString([NotNull] object value) + private static string ConvertValueToString([CanBeNull] object value) { if (value is DateTime dateTimeValue) { From b299c91c5d91c86ced43e183e98a7b37adf0b32a Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Tue, 31 Aug 2021 13:31:59 +0800 Subject: [PATCH 3/3] Fix document --- docs/en/Modules/Permission-Management.md | 6 +++--- docs/en/Modules/Setting-Management.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/en/Modules/Permission-Management.md b/docs/en/Modules/Permission-Management.md index ba4b34d8ed..b97ddfca6c 100644 --- a/docs/en/Modules/Permission-Management.md +++ b/docs/en/Modules/Permission-Management.md @@ -28,7 +28,7 @@ In this dialog, you can grant permissions for the selected role. The tabs in the ## IPermissionManager -`IPermissionManager` is the main service provided by this module. It is used to read and change the permission values. `IPermissionManager` is typically used by the *Feature Management Dialog*. However, you can inject it if you need to set a permission value. +`IPermissionManager` is the main service provided by this module. It is used to read and change the permission values. `IPermissionManager` is typically used by the *Permission Management Dialog*. However, you can inject it if you need to set a permission value. > If you just want to read/check permission values for the current user, use the `IAuthorizationService` or the `[Authorize]` attribute as explained in the [Authorization document](../Authorization.md). @@ -91,9 +91,9 @@ public class CustomPermissionManagementProvider : PermissionManagementProvider } ```` -`PermissionManagementProvider` base class makes the default implementation (using the `IPermissionGrantRepository`) for you. You can override base methods as you need. Every provider must have a unique name, which is `Custom` in this example (keep it short since it is saved to database for each feature value record). +`PermissionManagementProvider` base class makes the default implementation (using the `IPermissionGrantRepository`) for you. You can override base methods as you need. Every provider must have a unique name, which is `Custom` in this example (keep it short since it is saved to database for each permission value record). -Once you create your provider class, you should register it using the `FeatureManagementOptions` [options class](../Options.md): +Once you create your provider class, you should register it using the `PermissionManagementOptions` [options class](../Options.md): ````csharp Configure(options => diff --git a/docs/en/Modules/Setting-Management.md b/docs/en/Modules/Setting-Management.md index bf4ab30031..4eedcc969d 100644 --- a/docs/en/Modules/Setting-Management.md +++ b/docs/en/Modules/Setting-Management.md @@ -99,7 +99,7 @@ public class CustomSettingProvider : SettingManagementProvider } ```` -`SettingManagementProvider` base class makes the default implementation (using the `ISettingManagementStore`) for you. You can override base methods as you need. Every provider must have a unique name, which is `Custom` in this example (keep it short since it is saved to database for each feature value record). +`SettingManagementProvider` base class makes the default implementation (using the `ISettingManagementStore`) for you. You can override base methods as you need. Every provider must have a unique name, which is `Custom` in this example (keep it short since it is saved to database for each setting value record). Once you create your provider class, you should register it using the `SettingManagementOptions` [options class](../Options.md):