Quantcast
Channel: Forums - ArcObjects SDKs
Viewing all articles
Browse latest Browse all 1374

C# Create a Service in an Existing Folder

$
0
0
I am trying to create a service in a folder called Mobile_Services.
When I publish a map using ArcMap or ArcCatalog I am able to select an Existing folder called "Mobile_Services".
But when I use the code below, the location of the service appears into the root directory of the server, which is the default as mentioned in the help files.

I would like to have the service created in an existing folder called "Mobile_Services".
Please have a look at my code and hope fully someone can shed some light on this.

Code:

        public static void PublishMobileMapServiceForRaDCAMS(string serverMachineName, string serviceName, string pathToMXD)
        {
            //define paths for the onlineresource property in the extension properties
            string resourceWMS = "http://" + serverMachineName + "/ArcGIS/services/" + serviceName + "/MapServer/WMSServer";
            string resourceMobile = "http://" + serverMachineName + "/ArcGIS/services/" + serviceName + "/MapServer/MobileServer";

            //  Connect to the ArcGIS server called  serverMachineName (string) . 
            IGISServerConnection pGISServerConnection = new GISServerConnectionClass();
            pGISServerConnection.Connect(serverMachineName);

            // create the new configuration
            IServerObjectAdmin4 pServerObjectAdmin = (IServerObjectAdmin4)pGISServerConnection.ServerObjectAdmin;
            IServerObjectConfiguration pConfiguration = pServerObjectAdmin.CreateConfiguration();
            IServerObjectConfiguration2 pConfiguration2 = (IServerObjectConfiguration2)pConfiguration;
            IServerObjectConfiguration3 pConfiguration3 = (IServerObjectConfiguration3)pConfiguration;

            // set the  General Configuration Settings
            pConfiguration.Name = serviceName;          //  the name of this configuration
            pConfiguration.TypeName = "MapServer";  // the type of server object to be created
            pConfiguration.IsPooled = true;
            pConfiguration.MinInstances = 1;
            pConfiguration.MaxInstances = 2;
            pConfiguration.WaitTimeout = 60;
            pConfiguration.UsageTimeout = 600;
            pConfiguration.StartupType = esriStartupType.esriSTAutomatic;
            pConfiguration.IsolationLevel = esriServerIsolationLevel.esriServerIsolationHigh;


            //IEnumServerDirectory pEnumServerDirectories = pServerObjectAdmin.GetServerDirectories();
            //pEnumServerDirectories.Reset();
            //IServerDirectory pServerDirectory = pEnumServerDirectories.Next();
            //while (pServerDirectory != null)
            //{
            //    if (((IServerDirectory2)pServerDirectory).Type == esriServerDirectoryType.esriSDTypeOutput)
            //    {
            //        string dir = pServerDirectory.Path;
            //        string vdir = pServerDirectory.URL;
            //        break;
            //    }
            //}


            //  Set the configuration Properties of the MapServer Object
            IPropertySet pProps = pConfiguration.Properties;
            pProps.SetProperty("FilePath", pathToMXD);    // required property
            pProps.SetProperty("OutputDir", "c:\\arcgisserver\\arcgisoutput");
            string virtualOutDir = " http://" + serverMachineName + "/arcgisoutput";
            pProps.SetProperty("VirtualOutputDir", virtualOutDir);           
            pProps.SetProperty("MaxImageHeight", "2048");
            pProps.SetProperty("MaxRecordCount", "500");
            pProps.SetProperty("MaxBufferCount", "100");
            pProps.SetProperty("MaxImageWidth", "2048");
            pConfiguration.Properties = pProps;

       


            //  Set the info segment of the MapServer Object  properties
            IPropertySet info = pConfiguration2.Info;
            info.SetProperty("WebEnabled", "true");
            info.SetProperty("WebCapabilities", "Map,Query,Data");
            pConfiguration2.Info = info;

            //  Set the recycle properties of the MapSrver object
            IPropertySet pProp = pConfiguration.RecycleProperties;
            pProp.SetProperty("StartTime", "1:00 AM");    //  start recycling at midnight
            pProp.SetProperty("Interval", "86400");      //  every 24 hours
            pConfiguration.RecycleProperties = pProp;


            // create a mobile server and web enabled
            pConfiguration2.set_ExtensionEnabled("Mobileserver", true);
            IServerObjectManager pServerObjectManager = pGISServerConnection.ServerObjectManager;
            IServerContext serverContext = pServerObjectManager.CreateServerContext(string.Empty, string.Empty);
            IPropertySet2 extensionSet = serverContext.CreateObject("esriSystem.PropertySet") as IPropertySet2;
            extensionSet.SetProperty("WebEnabled", "true");
            extensionSet.SetProperty("WebCapabilities", "");
            pConfiguration2.set_ExtensionInfo("Mobileserver", extensionSet);

            //' add the configuration to  the server
            pServerObjectAdmin.AddConfiguration(pConfiguration2);           
            pServerObjectAdmin.StartConfiguration(serviceName, "MapServer");
           
           
            //IEnumBSTR pEnumBSTR = pServerObjectAdmin.GetFolders("arcgisoutput");
            //pEnumBSTR.Reset();
            //string fName = pEnumBSTR.Next();
            //while (pEnumBSTR.Next() != null)
            //{
            //    fName = pEnumBSTR.Next();               
            //}
        }

Thanks in advance!

Viewing all articles
Browse latest Browse all 1374

Trending Articles