【问题标题】:Exception occurring while connecting a C# client application to XSockets Server将 C# 客户端应用程序连接到 XSockets 服务器时发生异常
【发布时间】:2014-03-14 16:11:37
【问题描述】:

我正在使用 XSockets 在 XSockets 服务器和现有 C# 桌面客户端应用程序之间进行两种方式(基于 Web 套接字)通信。

我在现有的客户端应用程序中集成了代码,用于与 XSockets 服务器进行通信。

目前,XSocket Server 作为一个单独的控制台应用程序启动。它开始很好,没有任何问题。 然后我在我的 C# 客户端应用程序中使用以下伪代码块:

    XSocketClient client = new XSocketClient("ws://127.0.0.1:4509/MyController", "*", false);      //Error occurs right on execution of this line

    client.Open();

以下是抛出的异常快照;

Exception of type 'XSockets.Plugin.Framework.Exceptions.ExportException' was thrown

Custom Message:  Failed to load exported interfaces in assembly Microsoft.Practices.EnterpriseLibrary.Validation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

Source: XSockets.Plugin.Framework

Stack Trace:  at XSockets.Plugin.Framework.Composable.SatifyImportsExports()

   at XSockets.Plugin.Framework.Composable.Initialize()

   at XSockets.Plugin.Framework.Composable.GetExport[T]()

Type:  System.IO.FileNotFoundException

注意:如果我创建一个新的 C# windows 窗体客户端项目并尝试执行此代码,它会正常执行并成功连接到 XSocket 服务器。 意味着我现有的客户项目内部有一些令人不安的东西。

这个奇怪的异常的可能原因是什么?有任何想法吗?谢谢

编辑:我注意到如果我从我的 Bin 文件夹中手动删除 Microsoft.Practices.EnterpriseLibrary.Validation DLL,它会引发相同类型的异常,但这次会使用不同的自定义消息。我的意思是,错误与 Bin 文件夹中存在的其他一些 DLL(我现有的应用程序)有关。

【问题讨论】:

    标签: c# client xsockets.net


    【解决方案1】:

    我昨天遇到了类似的问题,然后这样解决了:

     Composable.ClearPluginFilters();
     Composable.AddPluginFilter("XSockets.*.dll");
    

    在我引导我的应用程序并启动我的服务器之前调用了这段代码。我知道这个问题有点老了,但如果其他人也在这里结束。

    Source from Google Groups

    【讨论】:

      【解决方案2】:

      好的,找到了我自己提出的问题的答案。

      与此问题相关的可能有两件事:

      1. Microsoft.Practices.EnterpriseLibrary.Validation.dll 导致 Bin => Release/Debug 文件夹出现问题。从 Visual Studio 项目引用列表中,右键单击 Microsoft.Practices.EnterpriseLibrary.Validation 引用,单击属性并将 [Copy Local] 属性设置为 false。 XSocketsClient 现在已成功连接到 XSockets 服务器,但我现有应用程序的一些其他逻辑仍需要 Enterprise Library,它是 Copy Local ==> false,对 .Net 运行时不可用,因此每当运行时到来时它都会显示异常跨越这些代码部分。

      2. 为了解决后来由于删除企业库引用而遇到的问题,我再次添加了 Microsoft.Practices.EnterpriseLibrary.Validation 引用,并且还添加了另一个 DLL Microsoft.Practices.EnterpriseLibrary.Common.dll 并将其引用添加到我的客户端应用程序。

      现在我的客户端应用程序可以很好地连接到 XSocket 服务器,而且现在包含企业库参考也没有问题。

      似乎企业库在运行时需要一些必不可少的东西,它们位于第二个 DLL 中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-05
        • 2017-11-01
        • 1970-01-01
        • 2015-05-16
        • 1970-01-01
        • 2023-04-09
        • 1970-01-01
        • 2019-03-17
        相关资源
        最近更新 更多