问题标签 [netnamedpipebinding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
360 浏览

wcf - WCF 服务:netNamedPipeBinding

试图NetnamedPipeBinding在我的网络服务中进行配置。

和绑定配置

在 IIS7 中部署

net.pipe在站点级别和虚拟目录级别启用管道并启动 Windows 进程激活。

当我在 IIS7 服务器中部署时,
没有启用虚拟目录级别,它说

如果我在虚拟目录级别启用它,它会说,

来自客户端的服务名称WSHttpBinding

实际上,我需要同时尝试wsHttpBindingnetNamedPipeBinding
我用netNamedPipeBindingIi 尝试过,遇到了这些问题。我错过了什么吗?

有什么想法可以解决这个问题吗?

0 投票
1 回答
535 浏览

c# - WCF netNamedPipeBinding 消息级安全,这可能吗?

我是 WCF 的新手,还在学习。

我想为 IPC 使用 netNamedPipeBinding,我需要它尽可能安全。我已经为 wsHttpBinding 做了一个练习服务,我在其中使用了证书,所以我把那部分覆盖了(使用消息级安全性)。

正如我所看到的,命名管道只能使用传输级别的安全性(至少只有传输显示在 Visual Studio 自动完成中)。

是否有可能基于机器密钥或其他东西对消息进行某种加密?如果是,我在哪里可以找到有关它的一些文档或示例,我已经在整个互联网上搜索了 2 天 :)

谢谢

0 投票
3 回答
8012 浏览

c# - “net.pipe://”不支持请求的升级

我正在尝试在 Windows 服务中托管 WCF net.pipe 服务。我在代码中定义服务,在 Windows 服务的OnStart()函数中。我也以类似的方式创建客户端 - 在代码中。

我看到有人问过这个问题,但它似乎总是只针对在 app/web.config 文件中定义 NetNamedPipe 的情况。

尝试调用服务时,出现错误:

这是我的代码:

该接口位于 ClassLibrary 项目中,并在主机应用程序(Windows 服务)和尝试调用该服务的客户端应用程序之间共享。

Service 类和 OnStart 函数位于 Windows Service 项目中。

服务代理位于客户端项目中(当然,它与 Windows 服务在同一台机器上运行)。

此外,每当我尝试使用代理时,我发现它的State == CommunicationState.Faulted. 然后我关闭/中止它,并创建一个new ManagerProxy(). 的状态ManagerProxyCreated。我尝试调用HelloWorld并获取上述内容Exception
下次我尝试使用它时 - 它的状态再次出现Faulted并且该过程重复。

0 投票
0 回答
674 浏览

c# - NetNamedPipeBinding channel.State == 已打开但失败

我正在开发一个应用程序,该应用程序用于在同一台机器上的 WCF 服务 (ServiceA) 和 Windows 服务 (ServiceB) NetNamedPipeBinding之间进行通信。WSDualHttpBinding

我在 ServiceA 中有一个代理类,它创建一个 ChannelFactory,然后是 NetNamedPipe Channel。然后缓存此通道并用于与 ServiceB 的所有通信。

基本上,每当我需要使用该NetNamedPipeBinding服务拨打电话时,我都会得到ChannelProxy这样的信息:

现在,99% 的时间,一切正常,但偶尔,我会在日志中看到最后一行 - ManagerProxy's State == Opened。在此检查之后,我立即尝试使用代理调用方法,但出现以下错误:

为什么我得到State == Opened并立即无法写入管道?
我是否应该对保留 ProxyChannel 的方式进行一些架构更改?

0 投票
0 回答
145 浏览

.net - WCF 服务启动两次

我有一个配置为使用网络命名管道绑定的 WCF 服务。这是服务的配置。

我尝试将服务作为 Windows 服务的一部分启动,服务启动成功。在同一台机器上,当它运行时,我启动了与控制台应用程序的一部分相同的服务、相同的配置和相同的地址。它也成功运行。唯一的区别是 Windows 服务以网络服务身份运行,而控制台应用程序以我的身份运行。

我无法理解 Windows 服务中的服务正在侦听时控制台应用程序中的服务是如何启动的。我试图运行另一个控制台应用程序实例,该实例抛出错误消息“有另一个端点正在侦听”。这是有道理的,我无法理解控制台应用程序的第一个实例是如何运行的,而 Windows 服务已经启动了相同的服务并正在侦听。有人可以解释一下吗?

0 投票
1 回答
342 浏览

performance - 优化 WCF NetNamedPipeBinding 性能

我有一个 WCF 命名管道服务,它接收一个字节数组并将其写入 SQLite DB。当我将 SQLite 插入逻辑移到 WCF 服务中时,写入性能几乎下降了一半。我在网上浏览了各种推荐,但似乎没有任何帮助。我当前的配置如下所示:

更多的调整建议将非常受欢迎。

0 投票
1 回答
1060 浏览

wcf - 无法在 Windows 7 上的 Windows 服务中使用 netNamedPipeBinding 托管和启动 WCF 服务

我正在使用 4.5 .Net Framework 上使用 C# 构建的两个应用程序

  1. WPF 桌面应用程序
  2. 视窗服务

并希望他们使用 IPC(进程间通信)方法相互交谈,因为他们需要根据条件经常共享一些数据/对象状态。

带有 netNamedPipeBinding 的 WCF 似乎是一个非常灵活的解决方案。我已经创建了一个 WCF 服务器和客户端并在控制台应用程序中成功测试了托管。

由于此解决方案有效,我希望 WCF 服务器托管在 Windows 服务中(这是我的最终要求)。

我可以成功托管应用程序(猜测是因为我没有看到任何可见的错误),但我无法将任何客户端连接到它。我使用了 WcfTestClient.exe 工具(Visual Studio 默认工具)并尝试从控制台应用程序连接,但它们似乎都不起作用,因为我不断收到错误 - 无法从 net.pipe://localhost/ 获取元数据测试WCFService/mex 。下面添加了详细信息。

我已经注册了具有管理员权限的 Windows 服务,并使用同一用户运行控制台应用程序测试客户端和 WcfTestClient.exe。

自然,我遗漏了一些东西,感谢您对修复它的帮助。

这是我在 Windows 服务中使用来托管 WCF netNamedPipeBinding 服务的代码:


错误:无法从 net.pipe://localhost/TestWCFService/mex 获取元数据 如果这是您有权访问的 Windows (R) Communication Foundation 服务,请检查您是否已在指定地址启用元数据发布。有关启用元数据发布的帮助,请参阅位于http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata的 MSDN 文档Exchange 错误 URI:net.pipe://localhost/TestWCFService/mex 元数据包含无法解析的引用:“net.pipe://localhost/TestWCFService/mex”。在 net.pipe://localhost/TestWCFService/mex 上没有可以接受消息的端点监听。这通常是由不正确的地址或 SOAP 操作引起的。有关更多详细信息,请参阅 InnerException(如果存在)。在您的本地计算机上找不到管道端点“net.pipe://localhost/TestWCFService/mex”。


这是我的 WCF 服务器配置设置:


对于客户端(在控制台应用程序中),我使用的是内联。这里的代码

0 投票
1 回答
99 浏览

c# - 如何从 C# 中的 Windows/wcf 服务获得最佳性能?

我目前正在开发一项 Windows 服务,该服务将处理通过 USB 连接到我的计算机的多个测量仪器的数据采集。它将向 SQL 数据库发送一些数据,但我也在为机器创建另一个应用程序,以便能够在本地实时查看数据,并且在最坏的情况下,我将处理超过 7,000,000 个元素的数组/列表情景。

目前我正在使用带有 NetNamedPipeBinding 的 WCF 进行进程间通信,它工作得很好(我可以在不到四分之一秒的时间内传输一个包含超过 700 万个双精度的数组)。所以我并不急需答案,但我很好奇是否有更快或更容易访问服务中数据的更快方法。

我一直在考虑深入研究非托管内存并让服务返回指向数组的指针或类似的东西。但是,如果收益很小,我不想为此烦恼。只是当传递一个类时(我敢打赌一个结构的开销会更少),性能坦克和我试图获得一个良好的基础,以防我开始处理更复杂的数据类型。

服务相关代码

客户端相关代码

获得双倍性能

双打数组

获取列表性能

类数组

0 投票
0 回答
726 浏览

c# - 我们可以在不使用端口的情况下在 WCF 中使用 Net​Named​Pipe​Binding 吗?

我正在尝试实现一个演示以在同一台机器上的两个应用程序之间进行通信。所以我选择Net​Named​Pipe​Binding。它的文档显示我们需要分配基地址,例如“ http://localhost:8000/uesamples/service

https://docs.microsoft.com/en-us/dotnet/api/system.servicemodel.netnamedpipebinding?view=netframework-4.7

但我不喜欢使用端口。

那么我们是否可以用另一种方式定义基地址呢?

0 投票
0 回答
208 浏览

c# - 如何避免使用 serface 分析器工具为 netnamedpipeBinding 检测到漏洞

我是 WCF 和命名管道的新手。我们创建了一个 WCF 服务、一个宿主应用程序来宿主 WCF 服务和 UI 应用程序。UI 应用程序需要调用 WCF 服务的方法来执行某些操作,还需要从服务接收消息。主机应用程序和 UI 应用程序都在同一台机器上运行。

在宿主应用程序(宿主 WCF 服务)中,我们使用 netNamedPipeBinding 创建命名管道。下面是代码截图

通道.start();

但是当我尝试使用攻击面分析器工具@ http://www.microsoft.com/en-in/download/details.aspx?id=24487 它检测到“m_sf_namespace_pipe”漏洞

附加表面analyzer.exe 工具为我的UI 应用程序显示“发现以下进程对此有一个打开的句柄”消息“GENERIC_ALL GENERIC_WRITE WRITE_OWNER WRITE_DAC SECTION_MAP_WRITE”。

在 WCF 服务中,我们使用默认设置,这里有什么我可以控制的吗?有什么方法可以提供更好的安全性/访问控制,以便分析工具不应该检测到任何漏洞?

谢谢