日期:2014-05-18  浏览次数:20788 次

.net 3.5开发的服务,Windows 2008和 XP的兼容性问题
我在.net 3.5 SP1环境下用C#写了一个windows服务,主要用于控制分布式系统中各个节点,主要功能有如下几点:
1、监听主控节点的广播消息;
2、与主控节点进行互动,并根据控制节点启动本机上的某个可执行文件;
比较简单,只是使用了简单的Socket库,并且使用了一些XML序列化的东西,服务被整合到我们的软件中,分布式控制采用Socket,计算节点联网后的通信采用WCF,界面上采用WPF设计。

现在说问题:
1、在XP平台下,工作很正常,七八台电脑连接,能够进行正常工作;

2、实验室有一台HP的8核小型服务器,我们想利用它进行联网计算,由于是服务器,只能安装Windows 2008 Server,服务能够正常接收到广播包,但是在执行启动计算程序任务的时候,但是会抛出一个异常,这个异常没法深入到程序中去具体定位,找了很久都找不到。

{"程序发出命令,但命令长度不正确。 (异常来自 HRESULT:0x80070018)"}

Source:"PresentationCore"


3、为此,我们用VS2008进行调试,不再发送广播包等信息,而是采用手动启动不同角色的计算节点,一切正常,证明WCF服务没有问题。

4、我把服务里面的代码功能抽取出来,做成了一个监听程序,并用它监听来自主控节点的广播和其他指令,都能够正常工作,而打包安装后的服务就是会报异常。

我想问的是:
1、.net 3.5 Framework SP1上面写的程序,在XP和 Windows 2008上面会出现兼容性问题?可能出在哪里?系统?还是API?
2、服务打包安装到系统中和debug调试阶段功能是一样的,但是为什么一个有问题而另一个正常呢?有没有人能过讲解一下服务的问题。

谢谢,这个问题困扰我们小组已经有一段时间,希望大家能过一起探讨。

------解决方案--------------------
建议输出2.0试一下
------解决方案--------------------

在其它的windows 2008的服务器调试过吗?


------解决方案--------------------
发布时,将目标平台(Target Platform)设置为x86,默认是Any
------解决方案--------------------
这个kb你看过了吧?
http://support.microsoft.com/kb/957178/en-us
------解决方案--------------------
换个2.0再试试 看看到底是系统问题,还是 VS问题
------解决方案--------------------
试试楼上说的那个KB