首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ArcGis 10.1 - .NET Windows服务

ArcGis 10.1 - .NET Windows服务
EN

Stack Overflow用户
提问于 2013-02-24 11:54:56
回答 2查看 2.2K关注 0票数 1

背景:

.NET Framework2.0,C# ESRI ArcGis 10.1 64位Windows 2008 R2.

  1. 我们有一个第三方程序(简单的系统A)使用ESRI-组件运行自定义模型-系统的地图。
  2. 系统A也使用它自己的许可证制度。
  3. 我们正在将数据从系统A拉到网络上,供用户查看。
  4. WebService (使用.NET-Remoting 2.0) <-> WindowsService.exe <-> DataFetcherStub.dll <-> DataFetcher.dll <->系统A

问题:

在ArcGIS 9.3上运行这个到ArcGIS 10.0是没有问题的,而且是系统A的早期版本。

System的提供者目前使用.NET-interop从10.0升级到ArcGIS 10.1。我们也这样做了,但是现在它不再使用.NET远程处理-> WindowsService了。

使用DataFetcherStub运行EXE,一切正常。运行它在系统A中崩溃的windows服务。

代码语言:javascript
复制
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-service.上这样做了。

1) System.Threading.ThreadPool.QueueUserWorkItem(o => FireAndForgetProcess();没有运气

2) Process.Start("FireAndForgetMe.exe")运气不好

任何人都可以给出另一种方法,让外部exe从windows服务中“释放”自己,就像它自己启动了它一样?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-25 00:17:00

溶液

我将运行windows服务的帐户更改为我的管理帐户,现在它可以工作了。或者10.1要求更多运行服务的windows帐户,或者他们降低了帐户的级别。

我想我得在明早检查一下。但是问题解决了。

编辑:这是权利的帐户,需要筹集后10.1。

票数 0
EN

Stack Overflow用户

发布于 2013-09-17 02:34:00

Esri开发团队给了我一个补丁,而不需要使用管理帐户运行。

这里的问题是,FLEXnet许可服务( Esri现在使用10.1,但在10.0中没有使用)没有为其设置适当的执行权限,因此“网络服务”帐户可以启动它。

Esri正在开发修补程序,但在此期间,有一个手动解决方案:

  1. 确保您是以具有计算机管理权限的用户身份登录的。
  2. 从“窗口开始”菜单中,选择“运行”并输入“cmd”。右键单击“cmd.exe”并选择“”。
  3. 在命令提示符下,运行以下命令: sc sdshow "FLEXnet许可服务“

这将打印出在该服务中注册的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许可服务“${原来的DACL字符串插入了新的权限字符串}

对于上面的示例,您可以输入: sdset "FLEXnet许可服务“FLEXnet

  1. 你应该看到SC SetServiceObjectSecurity的成功。就这样。网络服务现在应该没有错误地运行。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15051467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档