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(); }
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); } }