Arc 10.2.1 -- Geodata Service SOEs no longer supported?

3693
6
01-22-2014 02:05 PM
ErinBrimhall
Occasional Contributor II
I am in the process of rebuilding a 10.1.1 server object extension against the latest 10.2.1 assemblies, but it appears that Geodata Services may no longer be a service type that support SOEs.

Recompiling the SOE project produces the following error:


[INDENT]Service Object name GeoDataServer specified in the ServiceObjectExtension element is invalid. The value should be MapServer or ImageServer[/INDENT]


I traced this error through the ESRI.ArcGIS.AddIns.Server.targets file, into the GenerateServerAddInXml class (in the ESRI.ArcGIS.AddIns.SDK.ServerAddIns namespace), and found the following code in its Execute method:

cfg.AddIn.SOType.Name = this.GetProperty(tt, obj2, "ServerObjectType");
if ((cfg.AddIn.SOType.Name != "MapServer") && (cfg.AddIn.SOType.Name != "ImageServer"))
{
    throw new Exception(string.Format(Resources.InvalidAddInServerObject, cfg.AddIn.SOType.Name, "MapServer", "ImageServer"));
}



This validation logic is clearly limiting the "ServerObjectType" attribute values to either "MapServer" or "ImageServer". 

Can someone from Esri comment?  Is this an oversight in the add-in validation logic, or does ArcGIS Server 10.2+ truly no longer support "GeoDataServer" SOEs?
0 Kudos
6 Replies
nicogis
MVP Frequent Contributor
0 Kudos
ErinBrimhall
Occasional Contributor II
Thanks for the suggested thread, Domenico.

Ultimately I went the support incident route with Esri to shed light on this problem.

The short answer is that Geodata and Globe service SOEs are still supported by ArcGIS Server at 10.2+, but Esri is trying to "lead" people away from extending these service types by adding this validation check in the ArcObjects SDK that fails for any value but "ImageServer" and "MapServer".

I won't comment on the merits of this approach to wean developers off extending certain service types, but I can at least share my quick workaround in case anyone else runs into this problem.


  1. Change the "ServerObjectType" of the SOE class to either "ImageServer" or "MapServer".

  2. Build the project.

  3. Open the .soe file that was generated using zip-file software of your choice (e.g. 7-zip).

  4. Edit the Config.xml file, changing the <Name> element value under the <ServerObjectType> element to the actual SOE type (e.g. "GeoDataServer").

  5. Save the Config.xml / .soe file changes and deploy as normal.


It appears that the "ServerObjectType" value of the SOE class is just used when the Config.xml file is generated; this value doesn't actually get checked during deployment to ArcGIS Server or when the SOE is enabled or initialized on a specific service.

I am still experimenting but this workaround appears to work so far.
SebastienPelletier
Occasional Contributor
I don�??t understand ESRI for making such a big change in a service pack, because with version 10.2 everything worked fine. It is very disrespectful to their customers who spends huge amount of money in their products.

Regarding workaround, have you been able to debug? When I attach to Proccess in Visual Studio I get an error "The breakpoint Will not be hit Currently Have Been No symbols loaded for this document.".
0 Kudos
ErinBrimhall
Occasional Contributor II

Sebastian,

Yes, it is still possible to debug an SOE.

The error message you mention could be due to attaching to the wrong ArcSOC process.  Be sure that the ArcSOC process "Type" is "Managed". 

Also, if you are running several different SOEs on multiple services, you can pinpoint which ArcSOC belongs to which services by opening Windows Task Manager and enabling the "Command Line" column.  The "Command Line" column values will include the name of the services associated with a given ArcSOC.

0 Kudos
MichaelEber
Occasional Contributor

To add to Erin's fine suggestions: you can add the following line of code at the point where you want to debug:

          System.Diagnostics.Debugger.Launch();

Once you are attached you can stop and start your services as desired and you will remain attached to the code.

MariaKohistani
New Contributor

Make sure you have the correct version of ArcObject SDK installed. I ran into the same issue and it turned out that i had ArcObject SDK version 12.2.2 and Server 10.2. Once I had the same version I didn't get any error when building.

0 Kudos