RegisterSOE_VBNet\Program.vb
' Copyright 2010 ESRI ' ' All rights reserved under the copyright laws of the United States ' and applicable international laws, treaties, and conventions. ' ' You may freely redistribute and use this sample code, with or ' without modification, provided you include the original copyright ' notice and use restrictions. ' ' See the use restrictions. ' Imports Microsoft.VisualBasic Imports System Imports System.Collections.Generic Imports System.Text Namespace RegisterSOE_VBNet Friend Class Program Shared Sub Main(ByVal args() As String) ' Must run as an user in the agsadmin group on the SOM Dim agsServerConnection As New ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection() agsServerConnection.Host = "localhost" agsServerConnection.Connect() Dim serverObjectAdmin As ESRI.ArcGIS.Server.IServerObjectAdmin2 = TryCast(agsServerConnection.ServerObjectAdmin, ESRI.ArcGIS.Server.IServerObjectAdmin2) ' This name must match those defined for property pages Dim extensionName As String = "SpatialQuerySOE_VBNet" ' Check command line arguments to see if SOE is to be unregistered If args.Length = 1 AndAlso args(0) = "/unregister" Then ' Check whether the SOE is registered If ExtensionRegistered(serverObjectAdmin, extensionName) Then ' Delete the SOE serverObjectAdmin.DeleteExtensionType("MapServer", extensionName) Console.WriteLine(extensionName & " successfully unregistered") Else Console.WriteLine(extensionName & " is not registered with ArcGIS Server") End If Else ' Check whether the SOE is registered If (Not ExtensionRegistered(serverObjectAdmin, extensionName)) Then Dim serverObjectExtensionType As ESRI.ArcGIS.Server.IServerObjectExtensionType2 = TryCast(serverObjectAdmin.CreateExtensionType(), ESRI.ArcGIS.Server.IServerObjectExtensionType2) ' Must match the namespace and class name of the class implementing IServerObjectExtension serverObjectExtensionType.CLSID = "SpatialQuerySOE_VBNet.Extension" serverObjectExtensionType.Description = "Spatial Query Server Object Extension (VBNet)" serverObjectExtensionType.Name = extensionName ' Name that will be shown in the capabilities list on property pages serverObjectExtensionType.DisplayName = "Spatial Query VBNet" ' Register the SOE with the server serverObjectAdmin.AddExtensionType("MapServer", serverObjectExtensionType) Console.WriteLine(extensionName & " successfully registered with ArcGIS Server") Else Console.WriteLine(extensionName & " is already registered with ArcGIS Server") End If End If Console.ReadLine() End Sub ' Checks whether an extension with the passed-in name is already registered with the passed-in server Private Shared Function ExtensionRegistered(ByVal serverObjectAdmin As ESRI.ArcGIS.Server.IServerObjectAdmin2, ByVal extensionName As String) As Boolean ' Get the extensions that extend MapServer server objects Dim extensionTypes As ESRI.ArcGIS.Server.IEnumServerObjectExtensionType = serverObjectAdmin.GetExtensionTypes("MapServer") extensionTypes.Reset() ' If an extension with a name matching that passed-in is found, return true Dim extensionType As ESRI.ArcGIS.Server.IServerObjectExtensionType = extensionTypes.Next() Do While extensionType IsNot Nothing If extensionType.Name = extensionName Then Return True End If extensionType = extensionTypes.Next() Loop ' No matching extension was found, so return false Return False End Function End Class End Namespace