About the Simple SOAP SOE Sample
[C#]
SimpleSoapSOE_VBNet.cs
[Visual Basic .NET]
SimpleSoapSOE_VBNet.vb
Imports Microsoft.VisualBasic Imports System Imports System.EnterpriseServices Imports System.Runtime.InteropServices Imports ESRI.ArcGIS.esriSystem Imports ESRI.ArcGIS.Server Imports ESRI.ArcGIS.SOESupport Namespace SimpleSoapSOE_VBNet <ComVisible(True), Guid("71010E8B-805E-49d2-AD3D-9E1642C9CD4F"), ClassInterface(ClassInterfaceType.None)> _ Public Class SimpleSoapSOE_VBNet Inherits ServicedComponent Implements IRequestHandler2, IServerObjectExtension, IObjectConstruct Private Const c_SOEName As String = "SimpleSoapSOE_VBNet" Friend Const c_SOENamespace As String = "http://examples.esri.com/schemas/SimpleSoapSOE_VBNet/1.0" Friend Const c_ESRINamespace As String = "http://www.esri.com/schemas/ArcGIS/10.0" Private reqHandler As IRequestHandler2 Public Sub New() Dim soapCapabilities As New SoapCapabilities() soapCapabilities.AddMethod("EchoInput", "Echo") Dim soapImpl As New SoeSoapImpl(c_SOEName, soapCapabilities, AddressOf HandleSoapMessage) reqHandler = CType(soapImpl, IRequestHandler2) End Sub #Region "IServerObjectExtension" Public Sub Init(ByVal pSOH As IServerObjectHelper) Implements IServerObjectExtension.Init End Sub Public Sub Shutdown() Implements IServerObjectExtension.Shutdown End Sub #End Region #Region "IRequestHandler" Public Function HandleBinaryRequest(ByRef request() As Byte) As Byte() Implements ESRI.ArcGIS.esriSystem.IRequestHandler.HandleBinaryRequest Throw New NotImplementedException() End Function Public Function HandleStringRequest(ByVal Capabilities As String, ByVal request As String) As String Implements ESRI.ArcGIS.esriSystem.IRequestHandler.HandleStringRequest Return reqHandler.HandleStringRequest(Capabilities, request) End Function Public Function HandleBinaryRequest1(ByRef request() As Byte) As Byte() Implements ESRI.ArcGIS.esriSystem.IRequestHandler2.HandleBinaryRequest Throw New NotImplementedException() End Function Public Function HandleBinaryRequest2(ByVal Capabilities As String, ByRef request() As Byte) As Byte() Implements ESRI.ArcGIS.esriSystem.IRequestHandler2.HandleBinaryRequest2 Throw New NotImplementedException() End Function Public Function HandleStringRequest1(ByVal Capabilities As String, ByVal request As String) As String Implements ESRI.ArcGIS.esriSystem.IRequestHandler2.HandleStringRequest Return reqHandler.HandleStringRequest(Capabilities, request) End Function #End Region #Region "IObjectConstruct" Public Overloads Sub Construct(ByVal props As IPropertySet) Implements IObjectConstruct.Construct End Sub #End Region Public Sub HandleSoapMessage(ByVal reqMsg As IMessage, ByVal respMsg As IMessage) Dim methodName As String = reqMsg.Name If String.Compare(methodName, "EchoInput", True) = 0 Then EchoInput(reqMsg, respMsg) Else Throw New ArgumentException(String.Format("Method not supported: {0}.{1}", c_SOEName, methodName)) End If End Sub Private Sub EchoInput(ByVal reqMsg As IMessage, ByVal respMsg As IMessage) Dim reqParams As IXMLSerializeData = reqMsg.Parameters Dim inputString As String = reqParams.GetString(FindParam("Text", reqParams)) respMsg.Name = "EchoInputResponse" respMsg.NamespaceURI = c_SOENamespace respMsg.Parameters.AddString("Result", inputString) End Sub Private Function FindParam(ByVal parameterName As String, ByVal msgParams As IXMLSerializeData) As Integer Dim idx As Integer = msgParams.Find(parameterName) If idx = -1 Then Throw New ArgumentNullException(parameterName) End If Return idx End Function End Class End Namespace