diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/GenericServiceImpl.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/GenericServiceImpl.java
index 4677b71..8fe492c 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/GenericServiceImpl.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/GenericServiceImpl.java
@@ -17,7 +17,9 @@
 
 package org.apache.dubbo.admin.service.impl;
 
+import org.apache.dubbo.admin.common.util.Constants;
 import org.apache.dubbo.admin.common.util.Tool;
+import org.apache.dubbo.common.URL;
 import org.apache.dubbo.config.ApplicationConfig;
 import org.apache.dubbo.config.ReferenceConfig;
 import org.apache.dubbo.config.RegistryConfig;
@@ -38,15 +40,28 @@
 
     @PostConstruct
     public void init() {
-        RegistryConfig registryConfig = new RegistryConfig();
-        registryConfig.setAddress(registry.getUrl().getProtocol() + "://" + registry.getUrl().getAddress());
-        registryConfig.setGroup(registry.getUrl().getParameter("group"));
+        RegistryConfig registryConfig = buildRegistryConfig(registry);
 
         applicationConfig = new ApplicationConfig();
         applicationConfig.setName("dubbo-admin");
         applicationConfig.setRegistry(registryConfig);
     }
 
+    private RegistryConfig buildRegistryConfig(Registry registry) {
+        URL fromUrl = registry.getUrl();
+
+        RegistryConfig config = new RegistryConfig();
+        config.setGroup(fromUrl.getParameter("group"));
+
+        URL address = URL.valueOf(fromUrl.getProtocol() + "://" + fromUrl.getAddress());
+        if (fromUrl.hasParameter(Constants.NAMESPACE_KEY)) {
+            address = address.addParameter(Constants.NAMESPACE_KEY, fromUrl.getParameter(Constants.NAMESPACE_KEY));
+        }
+
+        config.setAddress(address.toString());
+        return config;
+    }
+
     public Object invoke(String service, String method, String[] parameterTypes, Object[] params) {
 
         ReferenceConfig<GenericService> reference = new ReferenceConfig<>();
@@ -73,7 +88,7 @@
      *
      * @param parameterTypes
      */
-    private void removeGenericSymbol(String[] parameterTypes){
+    private void removeGenericSymbol(String[] parameterTypes) {
         for (int i = 0; i < parameterTypes.length; i++) {
             int index = parameterTypes[i].indexOf("<");
             if (index > -1) {
