Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 错误8007007A-传递给系统调用的数据区域太小。将组件添加到COM+;目录_C#_.net_Vb6_Com+ - Fatal编程技术网

C# 错误8007007A-传递给系统调用的数据区域太小。将组件添加到COM+;目录

C# 错误8007007A-传递给系统调用的数据区域太小。将组件添加到COM+;目录,c#,.net,vb6,com+,C#,.net,Vb6,Com+,我们正在将用VB6编写的COM+应用程序\组件迁移到.Net。我们已经成功地迁移了大部分组件(~50个),其中包括1000多个类。最后一个(也是最大的)组件之一有356个类,当通过组件服务将VB6版本添加到COM+目录时,它可以正常加载。转换到.Net后,当尝试添加到目录时,我们得到8007007A错误。如果我们删除一些类(具体减少到347个),组件将像一个符咒一样加载。此行为同时显示在Windows 7和Windows Server 2012上。实际添加的dll在.Net中比在VB6中小(毫不

我们正在将用VB6编写的COM+应用程序\组件迁移到.Net。我们已经成功地迁移了大部分组件(~50个),其中包括1000多个类。最后一个(也是最大的)组件之一有356个类,当通过组件服务将VB6版本添加到COM+目录时,它可以正常加载。转换到.Net后,当尝试添加到目录时,我们得到8007007A错误。如果我们删除一些类(具体减少到347个),组件将像一个符咒一样加载。此行为同时显示在Windows 7和Windows Server 2012上。实际添加的dll在.Net中比在VB6中小(毫不奇怪),~5k比~1k。有没有关于问题到底是什么的想法?(不要真正信任错误消息)。任何指导都将不胜感激


谢谢。

您到底是如何添加组件的?您看到的特定错误是那些丑陋但普遍存在的错误之一,这些错误可能会影响任何返回XP的Windows框,但似乎最常见的是在“Windows Update”会话期间发生。这段代码实际上是一段“错误缓冲区不足”的代码,这至少促使我询问您是如何添加组件的。可能会带来一些额外的启示。现在,它们是通过组件服务UI:1添加的。运行comexp.msc 2。展开组件服务3。展开计算机4。展开我的电脑5。扩展COM+应用程序6。展开COM+应用程序以添加组件7。右键单击组件,选择新建组件以启动组件安装向导8。单击Next 9。单击安装新组件10。选择dll 11。单击Next 12。单击FinishI不会对此发誓,但我认为像这样的添加实际上是从COM+“系统应用程序”中剥离出来的,我认为这可能是一次添加这么多类而导致错误的原因。如果sys应用程序产生了相当于隐藏控制台会话的内容,那么它可能很简单,比如传递给spawed会话的参数太长,而这往往是由于您删除了一些类并使其正常工作而造成的。除了将组件重新打包到单独加载的DLL中,您可能没有太多的选项:(还有一件事——你可能会考虑编写一个利用COM管理接口/对象的应用程序,看看以编程方式添加类是否有好处,并以这种方式消除问题。好吧,唯一的一件事是,具有相同类数的组件的VB6版本加载良好。至于以编程方式添加它们从理论上讲,这实际上是我们在开发环境中以及在客户站点部署应用程序时通常要做的事情。不过,我会再看一看。