View on GitHub

Demonstrates how to start and stop the Local Server and start and stop a local map, feature, and geoprocessing service running on the Local Server.

Image of local server services

Use case

For executing offline geoprocessing tasks in your apps via an offline (local) server.

How to use the sample

Click Start Local Server to start the Local Server. Click Stop Local Server to stop the Local Server.

The Map Service control lets you to pick a local service that is available.

After browsing for the desired file, click Start Service to start the selected service.

When the running service’s url appears, select it and click Navigate to service. To stop this running service, click Stop Service.

How it works

To start a LocalServer and attach a LocalService:

  1. Create and run a local server with LocalServer.Instance.
  2. Start the server asynchronously with server.StartAsync().
  3. Create and run a local service. Here is an example of running a LocalMapService:
    1. Instantiate LocalMapService(Url) to create a local map service with the given URL path to map package (mpk or mpkx file).
    2. Start the job with LocalMapService.StartAsync(). The service is added to the LocalServer automatically.
  4. Stop the local server with LocalServer.Instance.StopAsync().

Relevant API

  • LocalFeatureService
  • LocalGeoprocessingService
  • LocalMapService
  • LocalServer
  • LocalServerStatus
  • LocalService

Offline data

Additional information

ArcGIS Maps SDK for Local Server (Local Server) is deprecated and will be retired in 2030. The last release will be ArcGIS Maps SDK for Local Server 200.8, in Q3 2025. For more information, see the deprecation announcement.

Tags

feature, geoprocessing, local services, map, server, service

Sample Code

LocalServerServices.xaml LocalServerServices.xaml LocalServerServices.xaml.cs
<UserControl x:Class="ArcGIS.WPF.Samples.LocalServerServices.LocalServerServices"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="*" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Button x:Name="LocalServerStartButton"
Grid.Row="0"
Grid.Column="0"
Margin="5"
Click="StartServerButtonClicked"
Content="Start Local Server" />
<Button x:Name="LocalServerStopButton"
Grid.Row="0"
Grid.Column="1"
Margin="5"
Click="StopServerButtonClicked"
Content="Stop Local Server"
IsEnabled="False" />
<ComboBox x:Name="ServiceSelectionCombo"
Grid.Row="1"
Grid.Column="0"
Grid.ColumnSpan="2"
Margin="5"
IsEnabled="False"
SelectionChanged="Selector_OnSelectionChanged">
<ComboBoxItem>Map Service</ComboBoxItem>
<ComboBoxItem>Feature Service</ComboBoxItem>
<ComboBoxItem>Geoprocessing Service</ComboBoxItem>
</ComboBox>
<Button x:Name="ServiceStartButton"
Grid.Row="2"
Grid.Column="0"
Margin="5"
Click="StartServiceButtonClicked"
Content="Start service"
IsEnabled="False" />
<Button x:Name="ServiceStopButton"
Grid.Row="2"
Grid.Column="1"
Margin="5"
Click="StopServiceButtonClicked"
Content="Stop service"
IsEnabled="False" />
<TextBox x:Name="StatusTextbox"
Grid.Row="3"
Grid.Column="0"
Grid.ColumnSpan="2"
Margin="5" />
<ListBox x:Name="ServicesListbox"
Grid.Row="4"
Grid.Column="0"
Grid.ColumnSpan="2"
Margin="5" />
<Button Grid.Row="5"
Grid.Column="0"
Grid.ColumnSpan="2"
Margin="5"
Click="NavigateButtonClicked"
Content="Navigate to service" />
</Grid>
</UserControl>