Vishful thinking…

Disabling REST and SOAP services in ArcGIS Server 9.3

Posted in Uncategorized by viswaug on August 28, 2008

The REST (Representational State Transfer) interface to ArcGIS Server was something that was added new in 9.3. But the SOAP interface to ArcGIS Server was available in the 9.2 versions and helped developers avoid the pitfalls of the Web ADF in 9.2. The WSDL for the SOAP services could be accessed at

http://MachineName/arcgis/services/MapServiceName/MapServer?wsdl

And the REST services could be accessed at

http://MachineName/arcgis/services/MapServiceName/MapServer (html)

or

http://MachineName/arcgis/services/MapServiceName/MapServer?f=json&pretty=true (json)

The SOAP access to services hosted by ArcGIS Server can be disabled through ArcCatalog. The following screenshots show how that can be done.

CropperCapture[14]

or

CropperCapture[11]

The REST service keeps chugging along even when the SOAP service is disabled. The “Services Directory” (available at http://MachineName/arcgis/services/MapServiceName/MapServers) entry for the map service still displays a link to the SOAP interface as shown below. But the link will be broken and you will receive an HTTP 404 error if you try to access the WSDL with the SOAP services disabled. The link displayed here seems to be constructed from the “SoapUrl” element value in the “C:\inetpub\wwwroot\ArcGIS\rest\rest.config” file.

CropperCapture[15]

The URL to the SOAP endpoint is not available in the JSON output from http://MachineName/arcgis/services/MapServiceName/MapServer?f=json&pretty=true. That would have been handy.

I haven’t come across any documented way of turning off the REST web services. But this can be done pretty easily by taking advantage of one of the lesser known ASP.NET 2.0 features and creating an empty file called “App_Offline.htm” file in the “C:\inetpub\wwwroot\ArcGIS\rest” directory. Creating the empty in that directory should disable the REST services while still having ArcGIS and the SOAP interfaces running.

Advertisement

ESRI REST URLs – Gotcha

Posted in Uncategorized by viswaug on August 27, 2008

We noticed this behavior with the ESRI REST API URLs today during one of our discussions in the office today. Normally the ESRI REST URLs look this way

 http://MachineName/ArcGIS/rest/services/MapServiceName/MapServer

In the above URL, the mapserver name is not case-sensitive. That is, the URLs below will work just fine.

 http://MachineName/ArcGIS/rest/services/MapServicename/MapServer

http://MachineName/ArcGIS/rest/services/mapservicename/MapServer

But note that in ArcGIS server, you can organize your MapServices in folders. Although, you cannot have folders inside folders. For the MapServices in the folders, the REST URL look like below. Where the URL includes the folder name before the MapService name.

 http://MachineName/ArcGIS/rest/services/FolderName/MapServiceName/MapServer

But the weird part is that the name of the folder in the above URL IS case-sensitive. That is, the URLs below will not work.

 http://MachineName/ArcGIS/rest/services/Foldername/MapServiceName/MapServer

http://MachineName/ArcGIS/rest/services/foldername/MapServiceName/MapServer

Hopefully, this inconsistent behavior is an oversight and ESRI would get around to fixing it in the coming versions.

Working with the ESRI JS API and Dojo

Posted in Uncategorized by viswaug on August 25, 2008

I am starting to work on a project using ArcGIS 9.3 JS API (v1.1) and am beginning to feel my way around the Dojo javascript library. The first thing that jumps out at you when using Dojo is the lack of good documentation. Even some of their demos seem to broken. After using working with ExtJS for a little while before, the Dojo documentation and its features is definitely not impressive.

I began using the Layout Container for the page layout. I wanted the bottom panel in the layout to be collapsible so that the user cam maximize their map area when the bottom panel is not being used. The Title Pane in Dojo provides the collapsible panel functionality. But the Layout Container and the Title Pane have their own dojoType that needs to be applied to the DIVs and I haven’t found any documentation on how to apply the functionality of two dojoTypes to a single DIV. This functionality was a breeze to implement in ExtJS. So, I am starting to implement that functionality on my own.

That said, I was able to get the sample for the Layout Container up and running without problems. But the trouble began when I replaced the script include for Dojo with the script include for the ESRI JS API. The Layout Container did not work as expected after.

Replacing

<script type=”text/javascript” src=http://o.aolcdn.com/dojo/1.0/dojo/dojo.xd.js djConfig=”parseOnLoad: true”></script>

with

<script type=”text/javascript” src=”http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.1″></script>

causes the Layout Container to break. So, In included the parseOnLoad attribute with the ESRI JS script include like here

<script type=”text/javascript” src=”http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.1″ djConfig=”parseOnLoad: true”></script>

But didn’t solve my problem either. After a lot of head scratching and help from a colleague with trying out various permutations and combinations of things, I found that the following works.

<script type=”text/javascript”>djConfig = { parseOnLoad: true }</script>
<script type=”text/javascript” src=”http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.1″></script>