2013-02-24 3 views
1

фона:ArcGis 10.1 - .NET службы Windows

.NET Framework 2.0, C# ESRI ArcGis 10,1 64-разрядная версия Windows Server 2008 R2.

  1. У нас есть программа thirdparty (система A для простоты) с использованием ESRI-компонентов, запускающих пользовательскую модель-систему для карт.
  2. Система А также использует собственную систему лицензирования.
  3. Мы вынимаем данные из Системы A в Интернет для просмотра пользователями.
  4. Система, как это следующим образом: Web < -> WebService (с использованием .NET-Remoting 2.0) < -> WindowsService.exe < -> DataFetcherStub.dll < -> DataFetcher.dll < -> Система A

проблема:

Запуск этого на ArcGIS 9.3 до ArcGIS 10.0 не было никаких проблем и более ранняя версия системы А.

Оференты Syst em В настоящее время он обновлен до ArcGIS 10.1, используя .NET-interop от 10.0. Мы тоже это сделали, но теперь это не сработает с использованием .NET-Remoting -> WindowsService.

Запуск EXE с использованием DataFetcherStub все в порядке. Запуск службы Windows это происходит сбой в системе А.

Faulting application name: windows_service.exe, version: 1.0.4802.40962, time stamp: 0x51293874 
Faulting module name: AfCore_libFNP.dll_unloaded, version: 0.0.0.0, time stamp: 0x4f920360 
Exception code: 0xc0000005 
Fault offset: 0x619fe9b0 
Faulting process id: 0x14c0 
Faulting application start time: 0x01ce120f632c1f0e 
Faulting application path: D:\path\windows_service.exe 
Faulting module path: AfCore_libFNP.dll 
Report Id: a41b42dc-7e02-11e2-8e56-00155d0a11a9 

ли кто-нибудь придумать с этой ошибкой при наличии лицензии с ArcGIS и работает через службу Windows?

На форумах ESRI есть нить, но это не даст мне никаких подсказок, как это решить?

http://forums.arcgis.com/threads/74546-Product-Licensing-in-Scheduled-Batch

Приближаясь к поставщику не вариант, как он взял их почти год, чтобы исправить последнюю проблему мы обнаружили. Указывая пальцем на нас в течение 9 месяцев, прежде чем они наконец доказали, что это их ошибка, и я уверен, что они будут бороться с этим. Это быстрее, если мы сможем обойтись.

Я пробовал сделать это из окна-сервиса.

1) System.Threading.ThreadPool.QueueUserWorkItem (o => FireAndForgetProcess()); НЕТ УДАЧИ

2) Process.Start («FireAndForgetMe.exe») НЕТ УДАЧИ

Любой человек может дать другой подход, чтобы получить внешний ехе к «освободить себя» от службы окон и действовать, как если бы он начал ею своя?

ответ

0

Решение

Я изменил учетную запись, работающих под управлением Windows-сервис мой админ-счет, и теперь он работает. Либо 10.1 требует больше учетной записи Windows, выполняющей службу, либо они понизили учетную запись.

Думаю, я должен проверить это утром. Однако проблема решена.

EDIT: Это права учетных записей, которые необходимо повысить после 10.1.

1

Команда разработчиков Esri дала мне исправление без необходимости запуска с использованием учетной записи администратора.

Проблема заключается в том, что Служба лицензирования FLEXnet (которую Esri теперь использует в 10.1, но не использовалась в 10.0) не имеет надлежащих разрешений на выполнение, установленных для нее, так что учетная запись «Сетевая служба» может запустить ее ,

Esri работает над патчем, но в то же время, есть ручной обходной путь:

  1. Убедитесь, что вы вошли в систему как пользователь с правами администрирования на компьютере.

  2. Из окна меню «Пуск» выберите «Запуск» и введите «cmd». Щелкните правой кнопкой мыши на «cmd.exe» и выберите

  3. В командной строке выполните следующую команду «Запуск от имени администратора.»: SC sdshow «FLEXnet Licensing Service»

Это будет печатать из разрешений DACL, зарегистрированных в этой службе: D: (D ;; CCDCLCSWRPWPDTLOCRSDRCWDWO ;;; NU) (A ;; CCDCLCSWRPWPDTLOCRSDRCWDWO ;;; BA) (A ;; CCDCLCSWRPWPDTLOCRSDRCWDWO ;;; SY) (A ;; CCLCSWRPLOCRRC; ; IU) S: (AU; FA; CCDCLCSWRPWPDTLOCRSDRCWDWO ;;; WD)

Нам нужно вставить «(A ;; CCLCSWRPWPDTLOCRRC ;;; WD)" в строку разрешений, такую ​​как: D: (D ;; CCDCLCSWRPWPDTLOCRSDRCWDWO ;;; NU) (A ;; CCLCSWRPWPDTLOCRRC ;;; WD) (A ;; CCDCLCSWRPWPDTLOCRSDRCWDWO ;;; BA) (A ;; CCDCLCSWRPWPDTLOCRSDRCWDWO ;; ; SY) (A ;; CCLCSWRPLOCRRC ;;; IU) S: (AU; FA; CCDCLCSWRPWPDTLOCRSDRCWDWO ;;; WD) ПРИМЕЧАНИЕ. Строка DACL пользователя может отличаться, и редактирование строки должно выполняться тщательно.

  1. Для регистрации DACL с помощью службы выполните команду: подкожно sdset «FLEXnet Licensing Service» $ {оригинал DACL строка с новым разрешением строки, вставленной}

Для примера выше вы бы введите: sc sdset «Служба лицензирования FLEXnet» D: (D ;; CCDCLCSWRPWPDTLOCRSDRCWDWO ;;; NU) (A ;; CCLCSWRPWPDTLOCRRC ;;; WD) (A ;; CCDCLCSWRPWPDTLOCRSDRCWDWO ;;; BA) (A ;; CCDCLCSWRPWPDTLOCRSDRCWDWO ;;; SY) (A ;; CCLCSWRPLOCRRC ;; IU) S: (AU; FA; CCDCLCSWRPWPDTLOCRSDRCWDWO ;;; WD)

  1. Вы должны увидеть [SC] SetServiceObjectSecurity SUCCESS. Вот и все. Служба сети теперь должна работать без ошибок.
Смежные вопросы