Esempio n. 1
0
        //解析WellKnown对象
        void ParseWellKnownServerObjectSection(XmlNode root)
        {
            foreach (XmlNode node in root.ChildNodes)
            {
                if (node.NodeType == XmlNodeType.Comment)
                {
                    continue;
                }
                if (node.Name != "add")
                {
                    continue;
                }

                string objectUri = base.GetStringAttribute(node, "objectUri");
                if (string.IsNullOrEmpty(objectUri))
                {
                    continue;
                }

                string fullTypeName = base.GetStringAttribute(node, "type");
                if (string.IsNullOrEmpty(fullTypeName))
                {
                    continue;
                }

                string mode = base.GetStringAttribute(node, "mode").ToLower();


                string typeName     = fullTypeName.Split(',')[0];
                string assemblyName = string.Empty;

                if (fullTypeName.IndexOf(',') != -1)
                {
                    assemblyName = fullTypeName.Split(',')[1];
                }
                else
                {
                    Assembly assembly = ReflectUtil.FindAssemblyFromAppDirectory(typeName);
                    if (assembly != null)
                    {
                        assemblyName = assembly.FullName;
                    }
                }

                WellKnownObjectMode objectMode = WellKnownObjectMode.Singleton;
                if (mode == "singlecall")
                {
                    objectMode = WellKnownObjectMode.SingleCall;
                }

                WellKnownServiceTypeEntry wse = new WellKnownServiceTypeEntry(typeName, assemblyName, objectUri, objectMode);
                si.AddWellKnownObject(wse);
            }
        }
Esempio n. 2
0
        //解析并注册WellKnown对象
        void ParseWellKnownClientObjectSection(XmlNode root)
        {
            foreach (XmlNode node in root.ChildNodes)
            {
                if (node.NodeType == XmlNodeType.Comment)
                {
                    continue;
                }
                if (node.Name != "add")
                {
                    continue;
                }

                string objectUri = base.GetStringAttribute(node, "objectUri");
                if (string.IsNullOrEmpty(objectUri))
                {
                    continue;
                }

                string fullTypeName = base.GetStringAttribute(node, "type");
                if (string.IsNullOrEmpty(fullTypeName))
                {
                    continue;
                }

                string typeName     = fullTypeName.Split(',')[0];
                string assemblyName = string.Empty;

                if (fullTypeName.IndexOf(',') != -1)
                {
                    assemblyName = fullTypeName.Split(',')[1];
                }
                else
                {
                    Assembly assembly = ReflectUtil.FindAssemblyFromAppDirectory(typeName);
                    if (assembly != null)
                    {
                        assemblyName = assembly.FullName;
                    }
                }

                WellKnownClientTypeEntry wce = new WellKnownClientTypeEntry(typeName, assemblyName, objectUri);
                RemotingConfiguration.RegisterWellKnownClientType(wce);
            }
        }