0

我们有一个作为控制台应用程序运行的服务器应用程序,它在 3.x 版本的 XSockets 上运行良好。我们目前正在升级到 4.0 以从改进的二进制消息传递中受益。

目前,我们已经使用新的 4.0 程序集构建了所有内容,但无法启动服务器并获得以下内容;

System.InvalidOperationException - 序列不包含匹配元素

打电话时...

m_xserver = XSockets.Plugin.Framework.Composable.GetExport<IXSocketServerContainer>();  <--- Exception happening here.

m_xserver.Start();
foreach (var server in m_xserver.Servers)
{
    LOG.DEBUG("XSocket Server {0}", server.ConfigurationSetting.Endpoint);
}

我们检查并仔细检查了 Nuget 引用并比较了输出目录中的文件。我们在 DLL 中确实有从 EXE 调用的服务器代码,但它在移动之前都可以正常工作。

如果我在异常上“继续”,我会在几秒钟后收到堆栈溢出错误。

为了发现是什么(如果有的话)DLL 或类导致了这个问题,我将上面的代码放在 Mani() 的开头并注释掉其他所有内容。该应用程序仍然以同样的方式失败。但是,如果我开始从构建文件夹中删除现在不需要的 DLL(从 102 个 DLL/XML/PDB 文件开始),那么当我剩下大约 21 到 25 个 DLL 文件时,它将开始工作。这似乎很奇怪,因为我试图尽我所能改变已删除的文件,并且不同的组合仍然可以让它在大约相同数量的文件下工作!!

插件框架可以处理的文件数量是否有限制?

我通过将它们一一复制到已知的工作 XSockets 4.0 控制台应用程序来更深入地研究导致此问题的文件。事实证明,我的 DLL 和第三方 DLL 的混合以某种方式使插件框架崩溃。这些是..

A number of my own custom DLLs
GalaSoft.MvvmLight.Extras.WPF45.dll
MahApps.Metro.dll
Microsoft.AspNet.SignalR.Client.dll
Microsoft.AspNet.SiganlR.Core.dll
Microsoft.Owin.dll
Microsoft.Owin.Security.dll
RazorEngine.dll
System.Net.Http.Formatting.dll
System.Web.Http.dll
System.Web.Http.SelfHost.dll
System.Windows.Interactivity.dll

即使是来自 Truen TVSN.dll 的非托管 DLL 也会导致堆栈溢出。

4

0 回答 0