客户端调用无法识别以 'Async' 结尾的 ABP 应用程序服务方法名称
ABP Application Service method names ending in 'Async' are not being recognised in the client side calls
我们最近从 ABP 3.0 升级到了 ABP 6.3。在此过程中,我们注意到我们的 JavaScript 代码无法识别以 'Async' 结尾的应用程序服务方法名称。例如,我们的服务器端角色应用程序服务 (RolesApplicationService) 中名为“CreateAsync”的方法需要在 JavaScript 中没有 'Async' 的情况下调用为“create”才能正常工作。
有没有办法恢复到我们可以使用完整方法名称的行为?
是的,在您的 Web
模块中设置 RemoveAsyncPostfixOnProxyGeneration = false
:
public override void PreInitialize()
{
Configuration.Modules.AbpWebCommon().ApiProxyScripting.RemoveAsyncPostfixOnProxyGeneration = false;
}
对于 ASP.NET 核心,您可能还需要在 Startup
中设置 SuppressAsyncSuffixInActionNames = false
class:
services.AddMvc(options =>
{
options.SuppressAsyncSuffixInActionNames = false;
});
参考文献:
- https://github.com/aspnetboilerplate/aspnetboilerplate/issues/2514
- https://github.com/aspnetboilerplate/aspnetboilerplate/issues/5043
- https://github.com/dotnet/aspnetcore/issues/8998
- https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.mvcoptions.suppressasyncsuffixinactionnames?view=aspnetcore-5.0
我们最近从 ABP 3.0 升级到了 ABP 6.3。在此过程中,我们注意到我们的 JavaScript 代码无法识别以 'Async' 结尾的应用程序服务方法名称。例如,我们的服务器端角色应用程序服务 (RolesApplicationService) 中名为“CreateAsync”的方法需要在 JavaScript 中没有 'Async' 的情况下调用为“create”才能正常工作。
有没有办法恢复到我们可以使用完整方法名称的行为?
是的,在您的 Web
模块中设置 RemoveAsyncPostfixOnProxyGeneration = false
:
public override void PreInitialize()
{
Configuration.Modules.AbpWebCommon().ApiProxyScripting.RemoveAsyncPostfixOnProxyGeneration = false;
}
对于 ASP.NET 核心,您可能还需要在 Startup
中设置 SuppressAsyncSuffixInActionNames = false
class:
services.AddMvc(options =>
{
options.SuppressAsyncSuffixInActionNames = false;
});
参考文献:
- https://github.com/aspnetboilerplate/aspnetboilerplate/issues/2514
- https://github.com/aspnetboilerplate/aspnetboilerplate/issues/5043
- https://github.com/dotnet/aspnetcore/issues/8998
- https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.mvcoptions.suppressasyncsuffixinactionnames?view=aspnetcore-5.0