public static ParagoServiceApplication Create(string name, ParagoService service, SPIisWebServiceApplicationPool applicationPool)
        {
            if (null == name)
            {
                throw new ArgumentNullException("name");
            }
            if (null == service)
            {
                throw new ArgumentNullException("service");
            }
            if (null == applicationPool)
            {
                throw new ArgumentNullException("applicationPool");
            }

            ParagoServiceApplication serviceApplication = new ParagoServiceApplication(name, service, applicationPool);

            serviceApplication.Update();

            serviceApplication.AddServiceEndpoint("http", SPIisWebServiceBindingType.Http);
            serviceApplication.AddServiceEndpoint("https", SPIisWebServiceBindingType.Https, "secure");

            // NOTE: It seems redundant, but update needs to be called before AND after the endpoint gets provisioned.
            serviceApplication.Update();

            return(serviceApplication);
        }
Пример #2
0
        public static ParagoServiceApplication GetServiceApplication(Guid applicationID)
        {
            ParagoService service = ParagoService.Local;

            if (service == null)
            {
                throw new InvalidOperationException("Parago Service is not installed");
            }

            return(service.Applications.GetValue <ParagoServiceApplication>(applicationID));
        }
Пример #3
0
        public static ParagoServiceApplication GetServiceApplication(string applicationName)
        {
            if (!string.IsNullOrEmpty(applicationName))
            {
                ParagoService service = ParagoService.Local;

                if (service != null)
                {
                    return(service.Applications.GetValue <ParagoServiceApplication>(applicationName));
                }
            }

            return(null);
        }
Пример #4
0
        public static ParagoService CreateParagoServiceWithServiceInstance()
        {
            SPFarm   farm   = SPFarm.Local;
            SPServer server = SPServer.Local;

            if (farm == null)
            {
                throw new InvalidOperationException("No farm object available");
            }
            if (server == null)
            {
                throw new InvalidOperationException("No server object available");
            }

            ParagoService         service         = ParagoService.Local;
            ParagoServiceInstance serviceInstance = null;
            ParagoServiceProxy    serviceProxy    = null;

            if (service == null)
            {
                // NOTE: There cases when service class got not detected, but is still avialable.
                // ---
                service = new ParagoService(farm);

                try
                {
                    service.Unprovision();
                }
                catch
                {
                }

                try
                {
                    service.Delete();
                }
                catch
                {
                }
                // ---

                // NOTE: Must be set new after Delete is called!
                service = new ParagoService(farm);

                try
                {
                    service.Update();

                    if (service.Status != SPObjectStatus.Online)
                    {
                        service.Provision();
                    }

                    serviceInstance = server.ServiceInstances.GetValue <ParagoServiceInstance>(ParagoServiceInstance.DefaultName);

                    if (serviceInstance == null)
                    {
                        serviceInstance = new ParagoServiceInstance(server, service);
                        serviceInstance.Update();
                    }

                    // NOTE: Provisioning the service instance will create the IIS web service, when first service
                    // appliation will be created, otherwise it will not work!
                    if (serviceInstance.Status != SPObjectStatus.Online)
                    {
                        serviceInstance.Provision();
                    }

                    serviceProxy = farm.ServiceProxies.GetValue <ParagoServiceProxy>(ParagoServiceProxy.DefaultName);

                    if (serviceProxy == null)
                    {
                        serviceProxy = new ParagoServiceProxy(farm);
                        serviceProxy.Update();
                    }

                    if (serviceProxy.Status != SPObjectStatus.Online)
                    {
                        serviceProxy.Provision();
                    }
                }
                catch
                {
                    try
                    {
                        if (serviceProxy != null)
                        {
                            if (serviceProxy.Status == SPObjectStatus.Online)
                            {
                                serviceProxy.Unprovision();
                            }

                            serviceProxy.Delete();
                        }

                        if (serviceInstance != null)
                        {
                            if (serviceInstance.Status == SPObjectStatus.Online)
                            {
                                serviceInstance.Unprovision();
                            }

                            serviceInstance.Delete();
                        }

                        if (service != null)
                        {
                            if (service.Status == SPObjectStatus.Online)
                            {
                                service.Unprovision();
                            }

                            service.Delete();
                        }
                    }
                    catch { }

                    throw;
                }
            }

            return(service);
        }
Пример #5
0
        public static void RemoveParagoServiceAndAllDependentObjects()
        {
            if (SPFarm.Local == null)
            {
                throw new InvalidOperationException("No farm object available");
            }

            ParagoService service = ParagoService.Local;

            if (service == null)
            {
                throw new InvalidOperationException("No service object available");
            }

            foreach (SPServiceProxy serviceProxy in SPFarm.Local.ServiceProxies)
            {
                if (serviceProxy is ParagoServiceProxy)
                {
                    foreach (SPServiceApplicationProxy serviceApplicationProxy in serviceProxy.ApplicationProxies)
                    {
                        if (serviceApplicationProxy is ParagoServiceApplicationProxy)
                        {
                            if (serviceApplicationProxy.Status == SPObjectStatus.Online)
                            {
                                serviceApplicationProxy.Unprovision();
                            }

                            serviceApplicationProxy.Delete();
                        }
                    }

                    if (serviceProxy.Status == SPObjectStatus.Online)
                    {
                        serviceProxy.Unprovision();
                    }

                    serviceProxy.Delete();
                }
            }

            foreach (SPServiceInstance serviceInstance in service.Instances)
            {
                if (serviceInstance is ParagoServiceInstance)
                {
                    if (serviceInstance.Status == SPObjectStatus.Online)
                    {
                        serviceInstance.Unprovision();
                    }

                    serviceInstance.Delete();
                }
            }

            foreach (SPServiceApplication serviceApplication in service.Applications)
            {
                if (serviceApplication is ParagoServiceApplication)
                {
                    if (serviceApplication.Status == SPObjectStatus.Online)
                    {
                        serviceApplication.Unprovision();
                    }

                    serviceApplication.Delete();
                }
            }

            if (service.Status == SPObjectStatus.Online)
            {
                service.Unprovision();
            }

            service.Delete();
        }
 ParagoServiceApplication(string name, ParagoService service, SPIisWebServiceApplicationPool applicationPool)
     : base(name, service, applicationPool)
 {
     _settings = new Dictionary <string, string>();
 }
 internal ParagoServiceInstance(string name, SPServer server, ParagoService service)
     : base(server, service)
 {
     Name = name;
 }
 internal ParagoServiceInstance(SPServer server, ParagoService service)
     : this(DefaultName, server, service)
 {
 }