diff --git a/typo3/sysext/extbase/Classes/Service/ExtensionService.php b/typo3/sysext/extbase/Classes/Service/ExtensionService.php
index eb274cc29a67c4be80b92087220d04691803e2c1..4228b1c002995008f4cc93afd276054b9a6467a6 100644
--- a/typo3/sysext/extbase/Classes/Service/ExtensionService.php
+++ b/typo3/sysext/extbase/Classes/Service/ExtensionService.php
@@ -88,13 +88,11 @@ class ExtensionService implements SingletonInterface
      */
     public function getPluginNameByAction(string $extensionName, string $controllerName, ?string $actionName): ?string
     {
-        $frameworkConfiguration = $this->configurationManager->getConfiguration(ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK);
         // check, whether the current plugin is configured to handle the action
-        if (!empty($frameworkConfiguration['extensionName']) && $extensionName === $frameworkConfiguration['extensionName']) {
-            if (isset($frameworkConfiguration['controllerConfiguration'][$controllerName]) && in_array($actionName, $frameworkConfiguration['controllerConfiguration'][$controllerName]['actions'], true)) {
-                return $frameworkConfiguration['pluginName'];
-            }
+        if (($pluginName = $this->getPluginNameFromFrameworkConfiguration($extensionName, $controllerName, $actionName)) !== null) {
+            return $pluginName;
         }
+
         $plugins = $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['extbase']['extensions'][$extensionName]['plugins'] ?? false;
         if (!$plugins) {
             return null;
@@ -119,6 +117,36 @@ class ExtensionService implements SingletonInterface
         return !empty($pluginNames) ? $pluginNames[0] : null;
     }
 
+    private function getPluginNameFromFrameworkConfiguration(string $extensionName, string $controllerAlias, ?string $actionName): ?string
+    {
+        if ($actionName === null) {
+            return null;
+        }
+
+        $frameworkConfiguration = $this->configurationManager->getConfiguration(ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK);
+
+        if (!is_string($pluginName = ($frameworkConfiguration['pluginName'] ?? null))) {
+            return null;
+        }
+
+        $configuredExtensionName = $frameworkConfiguration['extensionName'] ?? '';
+        $configuredExtensionName = is_string($configuredExtensionName) ? $configuredExtensionName : '';
+
+        if ($configuredExtensionName === '' || $configuredExtensionName !== $extensionName) {
+            return null;
+        }
+
+        $configuredControllers = $frameworkConfiguration['controllerConfiguration'] ?? [];
+        $configuredControllers = is_array($configuredControllers) ? $configuredControllers : [];
+
+        $configuredActionsByControllerAliases = array_column($configuredControllers, 'actions', 'alias');
+
+        $actions = $configuredActionsByControllerAliases[$controllerAlias] ?? [];
+        $actions = is_array($actions) ? $actions : [];
+
+        return in_array($actionName, $actions, true) ? $pluginName : null;
+    }
+
     /**
      * Determines the target page of the specified plugin.
      * If plugin.tx_$pluginSignature.view.defaultPid is set, this value is used as target page id
diff --git a/typo3/sysext/extbase/Tests/Unit/Service/ExtensionServiceTest.php b/typo3/sysext/extbase/Tests/Unit/Service/ExtensionServiceTest.php
index f4c8e03d8050b8fbb1c1c40fa39182341a45c1a3..82e709ab0d51e1f672269918eced17b01ab473b6 100644
--- a/typo3/sysext/extbase/Tests/Unit/Service/ExtensionServiceTest.php
+++ b/typo3/sysext/extbase/Tests/Unit/Service/ExtensionServiceTest.php
@@ -216,7 +216,23 @@ class ExtensionServiceTest extends UnitTestCase
      */
     public function getPluginNameByActionReturnsCurrentIfItCanHandleTheActionEvenIfMoreThanOnePluginMatches()
     {
-        $this->mockConfigurationManager->expects(self::once())->method('getConfiguration')->with(ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK)->willReturn(['extensionName' => 'CurrentExtension', 'pluginName' => 'CurrentPlugin', 'controllerConfiguration' => ['ControllerName' => ['actions' => ['otherAction']]]]);
+        $frameworkConfiguration = [
+            'extensionName' => 'CurrentExtension',
+            'pluginName' => 'CurrentPlugin',
+            'controllerConfiguration' => [
+                'Fully\\Qualified\\ControllerName' => [
+                    'alias' => 'ControllerName',
+                    'actions' => ['otherAction']
+                ]
+            ]
+        ];
+
+        $this->mockConfigurationManager
+            ->expects(self::once())
+            ->method('getConfiguration')
+            ->with(ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK)
+            ->willReturn($frameworkConfiguration);
+
         $actualResult = $this->extensionService->getPluginNameByAction('CurrentExtension', 'ControllerName', 'otherAction');
         $expectedResult = 'CurrentPlugin';
         self::assertEquals($expectedResult, $actualResult);