<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Get info from a MSD based map service? in ArcObjects SDK Questions</title>
    <link>https://community.esri.com/t5/arcobjects-sdk-questions/get-info-from-a-msd-based-map-service/m-p/428789#M11583</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;working w/ ArcGIS 9.3.1, writing VBA in ArCatalog..&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm using the following code to get the the underlying Map object for a bunch of map services -&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;
Sub LoopAGSservices()

&amp;nbsp;&amp;nbsp;&amp;nbsp; 'variables for the ArcCat application, view, and Selecteced objects, and a single object
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pGxApp As IGxApplication
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pGXEnum As IEnumGxObject
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pGxObj As IGxObject
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pGxApp = Application
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pgcat As IGxCatalog
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 'make sure at least one server selected
&amp;nbsp;&amp;nbsp;&amp;nbsp; If pGxApp.Selection.count &amp;lt; 1 Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox "Please select at least 1 GIS Server in the Contents Tab.", , "No Server selected."
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pGxApp.Selection.Clear pGxApp
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit Sub
&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 'get Enumerator of selected objects and loop through it
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pGXEnum = pGxApp.Selection.SelectedObjects
&amp;nbsp;&amp;nbsp;&amp;nbsp; pGXEnum.Reset
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pGxObj = pGXEnum.Next


&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim intServer As Integer
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim intService As Integer
&amp;nbsp;&amp;nbsp;&amp;nbsp; 

&amp;nbsp;&amp;nbsp;&amp;nbsp; 'server, som, server context (serivce), map service
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pSrvConn As IGISServerConnection
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pSOM As IServerObjectManager
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pSOAdmin As IServerObjectAdmin4

&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pEnumSOC As IEnumServerObjectConfiguration
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pSOC As IServerObjectConfiguration
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pServerContext As IServerContext
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pServerObject As IServerObject
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pMapServer As IMapServer2
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim strMXD As String
&amp;nbsp;&amp;nbsp;&amp;nbsp; 

&amp;nbsp;&amp;nbsp;&amp;nbsp; Do While Not pGxObj Is Nothing

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If TypeOf pGxObj Is GISServerConnection Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intServer = intServer + 1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intService = 0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pSrvConn = New GISServerConnection
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pSrvConn.Connect Left(pGxObj.Name, InStr(pGxObj.Name, " ") - 1) 'drop the "(admin)" from connection name
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pSOM = pSrvConn.ServerObjectManager
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pSOAdmin = pSrvConn.ServerObjectAdmin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pEnumSOC = pSrvConn.ServerObjectAdmin.GetConfigurations
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pSOC = pEnumSOC.Next
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Do Until pSOC Is Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intService = intService + 1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strMXD = ""
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If pSOC.TypeName = "MapServer" Then

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If pSOAdmin.GetConfigurationStatus(pSOC.Name, "MapServer").Status = esriCSStarted Then

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pServerContext = pSOM.CreateServerContext(pSOC.Name, "MapServer")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pServerObject = pServerContext.ServerObject
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pMapServer = pServerObject
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strMXD = pSOC.Properties.GetProperty("FilePath")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If strMXD &amp;lt;&amp;gt; "" Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetMapInfoforService pServerObject.ConfigurationName &amp;amp; ";" &amp;amp; pMapServer.DocumentInfo.GetProperty("author"), strMXD, "d:\temp\mapservices.txt"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pServerContext.ReleaseContext
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Debug.Print pSOC.Name &amp;amp; " is not started"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pSOC = pEnumSOC.Next
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Loop

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pGxObj = pGXEnum.Next
&amp;nbsp;&amp;nbsp;&amp;nbsp; Loop

End Sub

Sub GetMapInfoforService(strService As String, strFile As String, strWriteFile As String)

&amp;nbsp; On Error GoTo EH
&amp;nbsp; 
&amp;nbsp; 'test to see if valid MXD
&amp;nbsp; Dim pMapDoc As IMapDocument
&amp;nbsp; Set pMapDoc = New MapDocument
&amp;nbsp; If Not pMapDoc.IsMapDocument(strFile) Then
&amp;nbsp;&amp;nbsp;&amp;nbsp; Open strWriteFile For Append As #1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Print #1, strFile &amp;amp; ";Cannot open MXD - appears to be corrupt"
&amp;nbsp;&amp;nbsp;&amp;nbsp; Close #1
&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit Sub
&amp;nbsp; End If
&amp;nbsp; 
&amp;nbsp; 'Open the MapDoc &amp;amp; it's Map Collection and loop thru it
&amp;nbsp; pMapDoc.Open strFile
&amp;nbsp; 
&amp;nbsp; Dim intX As Integer
&amp;nbsp; Dim pmap As IMap
&amp;nbsp; 
&amp;nbsp; For intX = 0 To pMapDoc.MapCount - 1
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pmap = pMapDoc.Map(intX)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 'run layer &amp;amp; table documentor
&amp;nbsp;&amp;nbsp;&amp;nbsp; Map_Info pmap, strFile, strWriteFile
&amp;nbsp; Next
&amp;nbsp; 
&amp;nbsp; pMapDoc.Close
&amp;nbsp; Exit Sub
&amp;nbsp; 
EH:
&amp;nbsp; Debug.Print "error in GetMapInfo " &amp;amp; Err.Description
&amp;nbsp; 
End Sub
&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;which works great when the map service is based on a MXD file.&amp;nbsp; However I'm stuck when it comes to optimized map services and the associated MSD file - are there any classes &amp;amp; interfaces that I can use to get the name of the MXD it was created from?&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If there's .Net way to do it, I'm open to that too!&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Terry&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 02 Jul 2010 20:38:03 GMT</pubDate>
    <dc:creator>TerryGiles</dc:creator>
    <dc:date>2010-07-02T20:38:03Z</dc:date>
    <item>
      <title>Get info from a MSD based map service?</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/get-info-from-a-msd-based-map-service/m-p/428789#M11583</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;working w/ ArcGIS 9.3.1, writing VBA in ArCatalog..&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm using the following code to get the the underlying Map object for a bunch of map services -&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;
Sub LoopAGSservices()

&amp;nbsp;&amp;nbsp;&amp;nbsp; 'variables for the ArcCat application, view, and Selecteced objects, and a single object
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pGxApp As IGxApplication
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pGXEnum As IEnumGxObject
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pGxObj As IGxObject
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pGxApp = Application
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pgcat As IGxCatalog
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 'make sure at least one server selected
&amp;nbsp;&amp;nbsp;&amp;nbsp; If pGxApp.Selection.count &amp;lt; 1 Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox "Please select at least 1 GIS Server in the Contents Tab.", , "No Server selected."
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pGxApp.Selection.Clear pGxApp
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit Sub
&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 'get Enumerator of selected objects and loop through it
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pGXEnum = pGxApp.Selection.SelectedObjects
&amp;nbsp;&amp;nbsp;&amp;nbsp; pGXEnum.Reset
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pGxObj = pGXEnum.Next


&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim intServer As Integer
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim intService As Integer
&amp;nbsp;&amp;nbsp;&amp;nbsp; 

&amp;nbsp;&amp;nbsp;&amp;nbsp; 'server, som, server context (serivce), map service
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pSrvConn As IGISServerConnection
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pSOM As IServerObjectManager
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pSOAdmin As IServerObjectAdmin4

&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pEnumSOC As IEnumServerObjectConfiguration
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pSOC As IServerObjectConfiguration
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pServerContext As IServerContext
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pServerObject As IServerObject
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pMapServer As IMapServer2
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim strMXD As String
&amp;nbsp;&amp;nbsp;&amp;nbsp; 

&amp;nbsp;&amp;nbsp;&amp;nbsp; Do While Not pGxObj Is Nothing

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If TypeOf pGxObj Is GISServerConnection Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intServer = intServer + 1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intService = 0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pSrvConn = New GISServerConnection
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pSrvConn.Connect Left(pGxObj.Name, InStr(pGxObj.Name, " ") - 1) 'drop the "(admin)" from connection name
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pSOM = pSrvConn.ServerObjectManager
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pSOAdmin = pSrvConn.ServerObjectAdmin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pEnumSOC = pSrvConn.ServerObjectAdmin.GetConfigurations
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pSOC = pEnumSOC.Next
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Do Until pSOC Is Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intService = intService + 1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strMXD = ""
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If pSOC.TypeName = "MapServer" Then

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If pSOAdmin.GetConfigurationStatus(pSOC.Name, "MapServer").Status = esriCSStarted Then

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pServerContext = pSOM.CreateServerContext(pSOC.Name, "MapServer")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pServerObject = pServerContext.ServerObject
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pMapServer = pServerObject
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strMXD = pSOC.Properties.GetProperty("FilePath")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If strMXD &amp;lt;&amp;gt; "" Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetMapInfoforService pServerObject.ConfigurationName &amp;amp; ";" &amp;amp; pMapServer.DocumentInfo.GetProperty("author"), strMXD, "d:\temp\mapservices.txt"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pServerContext.ReleaseContext
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Debug.Print pSOC.Name &amp;amp; " is not started"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pSOC = pEnumSOC.Next
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Loop

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pGxObj = pGXEnum.Next
&amp;nbsp;&amp;nbsp;&amp;nbsp; Loop

End Sub

Sub GetMapInfoforService(strService As String, strFile As String, strWriteFile As String)

&amp;nbsp; On Error GoTo EH
&amp;nbsp; 
&amp;nbsp; 'test to see if valid MXD
&amp;nbsp; Dim pMapDoc As IMapDocument
&amp;nbsp; Set pMapDoc = New MapDocument
&amp;nbsp; If Not pMapDoc.IsMapDocument(strFile) Then
&amp;nbsp;&amp;nbsp;&amp;nbsp; Open strWriteFile For Append As #1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Print #1, strFile &amp;amp; ";Cannot open MXD - appears to be corrupt"
&amp;nbsp;&amp;nbsp;&amp;nbsp; Close #1
&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit Sub
&amp;nbsp; End If
&amp;nbsp; 
&amp;nbsp; 'Open the MapDoc &amp;amp; it's Map Collection and loop thru it
&amp;nbsp; pMapDoc.Open strFile
&amp;nbsp; 
&amp;nbsp; Dim intX As Integer
&amp;nbsp; Dim pmap As IMap
&amp;nbsp; 
&amp;nbsp; For intX = 0 To pMapDoc.MapCount - 1
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pmap = pMapDoc.Map(intX)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 'run layer &amp;amp; table documentor
&amp;nbsp;&amp;nbsp;&amp;nbsp; Map_Info pmap, strFile, strWriteFile
&amp;nbsp; Next
&amp;nbsp; 
&amp;nbsp; pMapDoc.Close
&amp;nbsp; Exit Sub
&amp;nbsp; 
EH:
&amp;nbsp; Debug.Print "error in GetMapInfo " &amp;amp; Err.Description
&amp;nbsp; 
End Sub
&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;which works great when the map service is based on a MXD file.&amp;nbsp; However I'm stuck when it comes to optimized map services and the associated MSD file - are there any classes &amp;amp; interfaces that I can use to get the name of the MXD it was created from?&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If there's .Net way to do it, I'm open to that too!&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Terry&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 02 Jul 2010 20:38:03 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/get-info-from-a-msd-based-map-service/m-p/428789#M11583</guid>
      <dc:creator>TerryGiles</dc:creator>
      <dc:date>2010-07-02T20:38:03Z</dc:date>
    </item>
  </channel>
</rss>

