引用任务数据流时 WCF 中断



我有两个应用程序,我想使用命名管道使用 WCF 在它们之间进行通信。它坏了。

如果在单独的线程中启动 ServiceHost,则错误是客户端EndpointNotFoundException,或者服务器端FaultException,然后在主线程中打开主机时客户端AddressAlreadyInUseException(顺便说一句,无论错误如何,该错误都不起作用(。

异常是使用修改后的 App.config 跟踪的,如此处所述。

  • 这两个项目都使用 .NET Framework 4.7.1
  • 服务器端应用程序引用 System.Threading.Tasks.Dataflow
  • 客户端没有引用任何值得注意的内容

错误在于引用的 System.Threading.Tasks.Dataflow 库以及我使用 WCF 的方式。它引入了一堆烦人的引用,这些引用并不是真正必要的,并且在不告诉用户的情况下更改了 app.config。

它将assemblyBinding-Tags 的列表添加到输出目录中的结果中,即使用户不希望这样做。其中一个看起来像这样:

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
</dependentAssembly>
</assemblyBinding>

这种重新绑定是关键。我曾经启动 WCF 进程,等待一段时间Thread.Sleep(500ms-ish(,然后尝试连接客户端。如果没有重新绑定,这就可以了。有了它,虽然它没有,因为现在 500ms 太低了。将其提高到 1 秒再次工作得很好。

总结:重新绑定会导致 WCF 中的少量开销,从而中断了我的计时。

最新更新