コード例 #1
0
ファイル: WcfServiceInternal.cs プロジェクト: cash2one/devfx
        protected override void PublishService(RemotingServiceItemSetting setting)
        {
            var typeName = setting.TypeName;

            if (string.Compare(typeName, ":wcf", true) != 0)
            {
                base.PublishService(setting);
                return;
            }
            if (HttpContext.Current != null)             //ignore in iis
            {
                return;
            }
            var serviceTypeName = setting.ServiceTypeName;

            if (string.IsNullOrEmpty(serviceTypeName))
            {
                throw new RemotingException("serviceType is required in config file");
            }
            serviceTypeName = ObjectService.GetTypeName(setting.ServiceTypeName);
            var serviceType = TypeHelper.CreateType(serviceTypeName, true);
            var serviceHost = new ServiceHost(serviceType);

            serviceHost.Open();
        }
コード例 #2
0
        protected virtual void PublishService(RemotingServiceItemSetting setting)
        {
            var typeName = setting.TypeName;

            if (string.IsNullOrEmpty(typeName))
            {
                throw new RemotingException("type is missing in remoting config file");
            }
            typeName = ServiceLocator.GetTypeName(typeName);
            var    serviceType     = TypeHelper.CreateType(typeName, true);
            var    serviceName     = setting.ServiceTypeName;
            object serviceInstance = null;

            if (!string.IsNullOrEmpty(serviceName))
            {
                serviceInstance = ServiceLocator.GetService(serviceName) ?? TypeHelper.CreateObject(serviceName, serviceType, false);
            }
            if (serviceInstance == null)
            {
                serviceInstance = TypeHelper.CreateObject(serviceType, null, false);
            }
            if (serviceInstance == null)
            {
                throw new RemotingException("remoting service instance can't be created");
            }
            var serviceProxy = serviceInstance as MarshalByRefObject ?? CreateServiceProxy(serviceType, serviceInstance);

            if (serviceProxy != null)
            {
                RemotingServices.Marshal(serviceProxy, setting.Name, serviceType);
            }
        }