背景:
.NET Framework 2.0,C# ESRI ArcGis 10.1 64 位 Windows Server 2008 R2。
- 我们有一个第三方程序(系统 A 为简单起见)使用 ESRI 组件运行自定义模型系统的地图。
- 系统 A 也使用它自己的许可系统。
- 我们正在将数据从系统 A 拉到网络上供用户查看。
- 系统如下: Web <-> WebService (使用 .NET-Remoting 2.0) <-> WindowsService.exe <-> DataFetcherStub.dll <-> DataFetcher.dll <-> System A
问题:
在 ArcGIS 9.3 到 ArcGIS 10.0 上运行这个都没有问题,而且系统 A 的早期版本。
系统 A 的提供者目前使用 10.0 中的 .NET-interop 将其升级到 ArcGIS 10.1。我们也这样做了,但现在它不再使用 .NET-Remoting -> WindowsService 了。
使用 DataFetcherStub 运行 EXE 一切正常。运行 Windows 服务,它在系统 A 内崩溃。
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 个月,我很确定他们也会与此作斗争。如果我们能做一个变通方法会更快。
我已经尝试从 Windows 服务中执行此操作。
1) System.Threading.ThreadPool.QueueUserWorkItem(o => FireAndForgetProcess()); 没运气
2)Process.Start(“FireAndForgetMe.exe”)没有运气
任何人都可以提供另一种方法来让外部 exe 从 Windows 服务“释放自身”并表现得好像它是由它自己启动的一样?