代码自动发布服务 ArcServer

http://bbs.esrichina-bj.cn/esri/viewthread.php?tid=129438&extra=page%3D2

 

这两天需要实现一个功能,自动把已有的mxd文件发布MapServer到服务器上。具体代码是在网上找的,然后调通运行通过。
代码如下:

public bool PublishServices(string MapPath, string ServerName)
        {
            //IGISServerConnection pGISServerConnection;  
            //pGISServerConnection = new GISServerConnectionClass();  
            //pGISServerConnection.Connect(HostName);  
            ESRI.ArcGIS.ADF.Identity identity = new ESRI.ArcGIS.ADF.Identity("ArcGISWebServices", "gisserver", "QQ");
            ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection agsConnection = new ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection("QQ", identity);
            agsConnection.Connect();

            IServerObjectAdmin pServerObjectAdmin;
            pServerObjectAdmin = agsConnection.ServerObjectAdmin;
            IServerObjectConfiguration2 configuration = (IServerObjectConfiguration2)pServerObjectAdmin.CreateConfiguration();
            configuration.Name = ServerName;//发布Service的名称,必填  
            configuration.TypeName = "MapServer";//发布服务的类型,如:MapServer,GeocodeServer  
            IPropertySet props = configuration.Properties;
            props.SetProperty("FilePath", MapPath);//设置MXD的路径 
            #region 以下的property并非必须,只要一个filepath就可以发布
            props.SetProperty("OutputDir", "d:\\arcgisserver\\arcgisoutput");//图片的输出目录  
            props.SetProperty("VirtualOutPutDir", "http://QQ/arcgisoutput");//图片输出的虚拟路径  
            props.SetProperty("SupportedImageReturnTypes", "URL");//支持的图片类型  
            props.SetProperty("MaxImageHeight", "2048");//图片的最大高度  
            props.SetProperty("MaxRecordCount", "500");//返回记录的最大条数  
            props.SetProperty("MaxBufferCount", "100");//缓冲区分析的最大数目  
            props.SetProperty("MaxImageWidth", "2048");//图片的最大宽度  
            props.SetProperty("IsCached", "false");//是否切片  
            props.SetProperty("CacheOnDemand", "false");//是否主动切片  
            props.SetProperty("IgnoreCache", "false");//是否忽略切片  
            props.SetProperty("ClientCachingAllowed", "true");//是否允许客户端缓冲  
            props.SetProperty("CacheDir", "c:\\arcgisserver\\arcgiscache\\" + ServerName);//切片的输出路径  
            props.SetProperty("SOMCacheDir", "c:\\arcgisserver\\arcgiscache");//som的切片输出路径  

            //configuration.Description = "NewService";//Service的描述  
            configuration.IsolationLevel = esriServerIsolationLevel.esriServerIsolationHigh;//或者esriServerIsolationLow,esriServerIsolationAny  
            configuration.IsPooled = true;//是否池化  
            configuration.MaxInstances = 2;//最多的实例数  
            configuration.MinInstances = 1;//最少的实例数  

            ////设置刷新  
            IPropertySet recycleProp = configuration.RecycleProperties;
            recycleProp.SetProperty("StartTime", "00:00");//刷新开始时间  
            recycleProp.SetProperty("Interval", "3600");//刷新间隔  

            ////设置是否开启REST服务  
            IPropertySet infoProp = configuration.Info;
            infoProp.SetProperty("WebEnabled", "true");//是否提供REST服务  
            infoProp.SetProperty("WebCapabilities", "Map,Query,Data");//提供何种服务  

            //configuration.StartupType = esriStartupType.esriSTAutomatic;//或者esriSTManual  
            //configuration.UsageTimeout = 120;//客户端占用一个服务的最长时间  
            //configuration.WaitTimeout = 120;//客户端申请一个服务的最长等待时间 
            #endregion

            //添加服务到Server  
            pServerObjectAdmin.AddConfiguration(configuration);

            //启动服务  
            pServerObjectAdmin.StartConfiguration(ServerName, "MapServer");
            return true;

        }

 

我的计算机名叫"QQ”,“ArcGISWebServices”是安装arcgisserver的时候创建的用户(安装server以后多了个som,soc和ArcGISWebServices3个用户),"gisserver"是创建该用户时设置的密码。

posted @ 2013-06-26 15:30  xzbluemap  阅读(599)  评论(0编辑  收藏  举报