MapDotNet UX Help

Services Administration

Administer MapDotNet UX Services using the IIS Administrator application.

Service Configuration

Service configuration settings are in the web.config file.  There are several sections for different parts of the application.

mapdotnet.mapservicesettings

<!-- Default Settings -->
<mapdotnet.mapservicesettings>
  <add key="EnableLogging" value="false"/>
  <add key="EnableProfiling" value="false"/>
  <!-- if present and > 0, max width or height -->
  <add key="MaxImageDimension" value="4096"/>
  <!-- if present and > 0, maximum number of features to render per layer -->
  <!-- add key="MaxFeaturesRenderedPerLayer" value="1000000" / -->
  <!-- culture specifier for text rendering, if missing or invalid defaults to "en-US" -->
  <add key="Culture" value="en-US"/>
 </mapdotnet.mapservicesettings>
 <mapdotnet.featureservicesettings>
  <add key="EnableLogging" value="false"/>
  <add key="EnableProfiling" value="false"/>
 </mapdotnet.featureservicesettings>
 <mapdotnet.featureupdateservicesettings>
  <add key="EnableLogging" value="false"/>
  <add key="EnableProfiling" value="false"/>
 </mapdotnet.featureupdateservicesettings>
 <mapdotnet.adminservicesettings>
  <!-- full or relative path (to the services root) to the location of mapfiles xxxx.mapx -->
  <add key="MapFilesPath" value=".\..\Content\UXServiceMapFiles\"/>
  <!-- full or relative path (to the services root) to the location of mapfiles index -->
  <add key="MapFilesXmlPath" value=".\..\Content\UXServiceMapFiles\MapFiles.xml"/>
  <!-- full or relative path (to the services root) to the location of log4net configuration file -->
  <add key="Log4NetConfigPath" value="Log4NetConfig.xml"/>
  <!-- name of class implementing IStorageFactory for container and object storage -->
  <add key="IStorageFactoryAssemblyName" value="ISC.MapDotNetServer.Common"/>
  <!-- name of class implementing IStorageFactory, must be fully qualified -->
  <add key="IStorageFactoryClassName" value="ISC.MapDotNetServer.Common.NTFSStorageFactory"/>
  <!--Time in seconds to cache IStorageObjects (e.g. files such as map definitions, shapefiles, etc.)-->
  <!--Admin service calls which update map definition files and MapFiles.xml index file automatically flushes a cached instance-->
  <!--If map files or the index file is modified externally, changes will not take effect until the cache age exceeds this value-->
  <!--Set to 0 for no caching-->
  <add key="StorageObjectCacheExpireSeconds" value="30"/>
  <!-- timeout in ms for map deserialization, defaults to 10000, values below 1000 are ignored -->
  <add key="MapDeserializerTimeoutMs" value="15000"/>
  <!-- thread counts for deserialization and worker thread pools -->
  <add key="MapDeserializerPoolSize" value="16"/>
  <add key="WorkDispatcherPoolSize" value="16"/>
  <!-- timeout value in seconds for an individual PostGIS or SQL 08 layer query, also applied to the query part of the map rendering process -->
  <add key="DatabaseQueryTimeout" value="120"/>
 </mapdotnet.adminservicesettings>
 <mapdotnet.shapefilesettings>
  <!-- add key="Password" value="Fn0rd!"></add -->
  <add key="DefaultPath" value=".\..\Content\Shapefiles\"></add>
 </mapdotnet.shapefilesettings>
 <mapdotnet.kmlfilesettings>
  <!-- add key="Password" value="Fn0rd!"></add -->
  <add key="DefaultPath" value=".\..\Content\KMLfiles"></add>
 </mapdotnet.kmlfilesettings>
 <mapdotnet.interrogationservicesettings>
  <add key="EnableLogging" value="false"/>
  <add key="EnableProfiling" value="false"/>
 </mapdotnet.interrogationservicesettings>
 <mapdotnet.wmservicesettings>
  <add key="ShowStackTrace" value="false"/>
 </mapdotnet.wmservicesettings>
 <mapdotnet.mapcachemanagersettings>
  <!-- indicates whether to use caching, default is "true" if omitted or any value other than false -->
  <add key="EnableMapCaching" value="false"/>
  <!-- indicates the default cache option if caching is used, default is ReadWrite if omitted or not a valid option (None, ReadOnly, ReadWrite, ForceWrite) -->
  <add key="DefaultCacheOption" value="ReadWrite"/>
  <!-- name of assembly containing IMapCacheManager implementation -->
  <add key="MapCacheAssemblyName" value="ISC.MapDotNetServer.Core.Services.DBMapCache"/>
  <!-- name of class implementing IMapCacheManager, must be fully qualified -->
  <add key="MapCacheClassName" value="ISC.MapDotNetServer.Core.Services.DBMapCache.DatabaseMapCache"/>
  <!-- name of any custom configuration section used by the IMapCacheManager implementation -->
  <add key="MapCacheCustomConfigSection" value="mapdotnet.dbmapcachemanagersettings"/>
 </mapdotnet.mapcachemanagersettings>
 <!-- this is the custom configuration section for the DatabaseMapCache class -->
 <!-- defaultType, defaultConnectionString, defaultTable must all be provided, these are used when a cache name is not specified -->
 <!-- calls to MapService.GetMap use these default values -->
 <!-- valid types are "PostGIS", "SqlServer2008" -->
 <!-- mapdotnet.dbmapcachemanagersettings defaultType="PostGIS" defaultConnectionString="SERVER=goisc-postgis83;PORT=5432;USER=postgres;PASSWORD=postgresuser;DATABASE=mdns-test-data;" defaultTable="mapCache" -->
 <mapdotnet.dbmapcachemanagersettings defaultType="SqlServer2008" defaultConnectionString="Data Source=[server]; Initial Catalog=[database]; User ID=[user]; Password=[pwd]" defaultTable="mapCache">
  <!-- additional caches may be specified here and accessed by name (the cacheName argument to MapService.GetMapWithSpecifiedCaching) -->
  <caches>
   <!-- only the name must be specified -->
   <!-- type, connectionString, and table need only be specified when they differ from the defaults above -->
   <addCache name="AltPG" table="alternateMapCache"></addCache>
   <addCache name="AltSS" type="SqlServer2008" connectionString="Data Source=[server]; Initial Catalog=[database]; User ID=[user]; Password=[pwd]" table="alternateMapCache"></addCache>
  </caches>
 </mapdotnet.dbmapcachemanagersettings>
 <mapdotnet.viewersettings>
  <!-- Any viewer setting can be overridden by a query string parameter of the same name -->
  <!-- REQUIRED: Map ID for the MapDotNet map -->
  <add key="MapID" value="Sample"/>
  <!-- everything below here can be overridden by a map metadata key of the same name -->
  <!-- the map layer the search tool searches -->
  <add key="SearchableLayers" value="Parcels,Parcels,Parcels"/>
  <!-- optional, the map layer that is initially selected.  Falls back to "SearchableLayer" if not provided -->
  <add key="InitialSelectedLayer" value="Parcels"/>
  <!-- data columns that can be searched, limit of three -->
  <add key="SearchColumns" value="ADDRESS,NAME,PIN"/>
  <!-- short, friendly names for search columns -->
  <add key="SearchColumnLabels" value="Address,Owner,Tax ID"/>
  <!-- hint text for search boxes (optional) -->
  <add key="SearchHints" value="Type the beginning of an address,Type part of the owner's last name,Type part of the Tax ID"/>
  <!-- Bing Map view to start on r (Roads), a (Aerial), h (Hybrid)... if omitted no bing is provided -->
  <add key="BingView" value="Hybrid"/>
  <!-- logo URL, absolute or relative to document root -->
  <add key="LogoURL" value="images/sampleLogo.png"/>
  <!-- shape highlight color, optional, must be of form AARRGGBB or RRGGBB, defaults to FFFFFF00 (yellow)
         this is not in the theme because it must be accessable for printing also -->
  <add key="FeatureHighlightColor" value="FFFF88FF"/>
  <!-- optional limit on records returned by search feature -->
  <!-- add key="MaxSearchResults" value="10" / -->
  <!-- optional limit on zoom level -->
  <!-- add key="MinimumZoomLevel" value="12"/ -->
  <!-- optional limit on zoom level -->
  <!-- add key="MaximumZoomLevel" value="18"/ -->
 </mapdotnet.viewersettings>

EnableLogging - [true|false], indicates whether to log errors that arise during map requests.
EnableProfiling - [true|false], indicates whether to log performance of all map requests.
MaxImageDimension - numeric, indicates the largest width or height permitted for map images.
Culture - [culture code, for example "en-US"] - Optional, culture specifier used for text formatting, defaults to en-US.
MaxFeaturesRenderedPerLayer - Optional, if present and > 0, maximum number of features to render per layer.

mapdotnet.featureservicesettings

EnableLogging - [true|false], indicates whether to log errors that arise during queries.
EnableProfiling - [true|false], indicates whether to log performance of all queries.

mapdotnet.featureupdateservicesettings

EnableLogging - [true|false], indicates whether to log errors that arise during data edits.
EnableProfiling - [true|false], indicates whether to log performance of all data edits.

mapdotnet.adminservicesettings

IStorageFactoryAssemblyName and IStorageFactoryClassName - abstraction of underlying storage (ships with support for NTFS and Azure blob storage)
StorageObjectCacheExpireSeconds - 0 for disabled or seconds all storage objects (files, blobs) are cached before checking for a change (used primarily for Azure)
MapFilesPath - folder path, location of folder where map files are.
MapFilesXmlPath - file path, location of file listing supported maps.
Log4NetConfigPath - file path, location of logging configuration file.
WorkDispatcherPoolSize - number of threads used for processing individual layers included in map and query requests.  This allows multi-layer requests to be handled in a multi-threaded manner. 
MapDeserializerPoolSize - number of threads used for deserializing map objects.  This must be done on STA threads.  This number should be less than or equal to the WorkDispatcherPoolSize.
DatabaseQueryTimeout - Optional, timeout value in seconds for an individual PostGIS or SQL 08 layer query, also applied to the query part of the map rendering process. 

mapdotnet.shapefilesettings

Password - optional, a password required for access to shape files.
DefaultPath - optional, folder path, default location to look for shape files when no path is specified in the request.

mapdotnet.kmlfilesettings

Password
- optional, a password required for access to KML files.
DefaultPath - optional, folder path, default location to look for KML files when no path is specified in the request.

mapdotnet.interrogationservicesettings
Interrogation refers to service methods that return information about data tables or that create, truncate, or delete data tables.  These methods are part of the Admin service.

EnableLogging - [true|false], indicates whether to log errors that arise during interrogation.
EnableProfiling - [true|false], indicates whether to log performance of interrogation operations.

mapdotnet.mapcachemanagersettings

EnableMapCaching - set true to use map caching.
MapCacheAssemblyName
- name of an assembly containing an implementation of ISC.MapDotNetServer.Common.Caching.IMapCacheManager.  The assembly should be present in the services bin folder or otherwise accessible.
MapCacheClassName - the fully qualified name of the class that implements IMapCacheManager.
MapCacheCustomConfigSection - the name of any custom configuration section used by the IMapCacheManager implementation.

mapdotnet.dbmapcachemanagersettings

This is a custom configuration section for the IMapCacheManager implementation, ISC.MapDotNetServer.Core.Services.DBMapCache.DatabaseMapCache, that ships with MapDotNet UX.  The root element has the following attributes:

defaultType - [PostGIS|SqlServer2008], the database connection type for a cache if not otherwise specified.
defaultConnectionString - the database connection string for a cache if not otherwise specified.
defaultTable - the database table used for the cache if not otherwise specified

These settings define the primary cache.  Calls to MapService.BeginGetMap or calls to MapService.BeginGetMapWithSpecifiedCaching that pass a null cacheName use this cache.  If additional caches are desired, they must be defined within a

<caches></caches>

subsection.  One or more

addCache

elements can be used to define additional caches.  Each must define a

name

attribute that is matched against the cacheName argument to MapService.BeginGetMapWithSpecifiedCaching and the optional attributes

type
connectionString
table


are used to override the corresponding default values.

Note that scripts to create a cache table for PostGIS or Sql Server 2008 are found in the SDK folder of the MapDotNet UX installation.