Silverlight и findTask

0 голосов
спросил 10 Сен, 10 от Cyberdeity (280 баллов) в категории Программные продукты Esri
Разрабатываю приложение на Silverlight с использованием ArcGis Server 9.3.1. Пытаюсь создать поиск, как показано в примере http://resources.esri.com/help/9.3/arcgisserver/apis/silverlight/samples/start.htm#Find
    
в обработчике пишу следующее

private void ExecuteButton_Click(object sender, RoutedEventArgs e)
        {
            GraphicsLayer graphicsLayer = MyMap.Layers["MyGraphicsLayer"] as GraphicsLayer;
            graphicsLayer.ClearGraphics();

            FindTask findTask = new FindTask("http://comp239:80/ArcGIS/rest/services/nasel/MapServer");
            findTask.Failed += FindTask_Failed;

               
            FindParameters findParameters = new FindParameters();
            // Слой для поиска
            findParameters.LayerIds.AddRange(new int[] { 0 });
            // Поля в слое для поиска
            findParameters.SearchFields.AddRange(new string[] { "name" });
                           
            Binding resultFeaturesBinding = new Binding("LastResult");     
               
            resultFeaturesBinding.Source = findTask;
            FindDetailsDataGrid.SetBinding(DataGrid.ItemsSourceProperty, resultFeaturesBinding);
            
            findParameters.SearchText = FindText.Text;
            findTask.ExecuteAsync(findParameters);

        }
Но при запуске приложения и нажатии на заветную кнопку "Найти" выскакивает сообщение: "ESRI.ArcGIS.Client.Task.ServiceException: В экземпляре объекта не задана ссылка на объект"

Данный сервис подключен к карте как динамический (ArcGISDynamicMapServiceLayer).
Дак вот не могу понять почему так, сервис создан на основании геоданных хранящихся в Postgres из них создан MXD документ.

Подскажите, кто сможет, что может быть.

P.S. При реализации примера указанного по вышеприведенной ссылке, с учетом использования их сервисов, все работает нормально.

8 Ответы

0 голосов
ответил 10 Сен, 10 от TDenis (42,620 баллов)
Если с помощью браузера зайти на
http://comp239:80/ArcGIS/rest/services/nasel/MapServer
и выполнить Find task с теми же параметрами поиска, то всё пройдёт успешно?
0 голосов
ответил 10 Сен, 10 от Cyberdeity (280 баллов)
Да, так поиск работает    
0 голосов
ответил 10 Сен, 10 от TDenis (42,620 баллов)
В деталях аргумента обработчика _Failed не написано ничего более конкретного?
Какая версия SL API?
Попробуйте для задачи и её параметров явно задать всё, что только можно. Включая обработчик ExecuteCompleted.
Попробуйте из mxd сделать msd, будут ли какие-нибудь ошибки, типа "не задана система координат"?
0 голосов
ответил 10 Сен, 10 от Cyberdeity (280 баллов)
Работаю с:
ArcGISSilverlightWPF12
Microsoft Expression® Studio 3
VS 2008
Silverlight 3 Toolkit November 2009
Silverlight3 Tools
0 голосов
ответил 10 Сен, 10 от Cyberdeity (280 баллов)
private void FindTask_Failed(object sender, TaskFailedEventArgs args)
        {
            MessageBox.Show("Find failed: " + args.Error);
        }
Это ответ на ваш первый вопрос
0 голосов
ответил 10 Сен, 10 от TDenis (42,620 баллов)
MessageBox.Show("Find failed: " + args.Error);

Лучше args.Error привести к ServiceException и пройтись по Details. Или просто поставить breakpoint и посмотреть.
Можно ещё попробовать отключить возврат геометрии. Если без неё заработает, то наверное всё-таки дело в mxd.
Можно посмотреть, что скажет fiddler - возвращаются ли результаты.
0 голосов
ответил 13 Сен, 10 от Cyberdeity (280 баллов)
При приведении args.Error к ServiceException выводит ту же ошибку ESRI.ArcGIS.Client.Task.ServiceException: В экземпляре объекта не задана ссылка на объект. Detail.count выводит 0.
А как отключить возврат геометрии? И что такое Fiddler&
0 голосов
ответил 13 Сен, 10 от TDenis (42,620 баллов)
Задать свойству ReturnGeometry значение false
http://resources.esri.com/help/9.3/arcgisserver/apis/silverlight/apiref/topic996.html

Fiddler перехватывает http-трафик. Можно посмотреть что ушло, что пришло. Отличная штука для отладки
http://fiddler2.com/fiddler2/
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...