两周前,我需要一种方法来将wcf服务与在同一台计算机上运行的Windows服务进行通信。 Windows服务必须从外部源获取数据并与wcf服务(在IIS中托管)共享,该服务必须在客户端发出请求时提供。我选择用ipc做到这一点。

我完成了,现在windows服务是ipc服务器,wcf服务是ipc客户端。这很顺利,但我认为这样做是错误的,因为要使它运行正确,必须使用ASPNET帐户执行Windows服务,为此必须分配ASPNET密码帐户,当我这样做时,IIS无法正常工作

我正在考虑不同的选择,但在所有这些选择中,问题仍然存在。一些想法?


编辑:

我需要的是一个系统,它在IIS中托管的Web服务中公开,通过telnet从另一个旧系统获取数据,这有点不稳定。第二个系统的响应速度很慢我选择在Web服务和旧系统之间放置一个进程(Windows服务)。 Windows服务必须保存从旧系统收集的数据,并且当wcf服务要求它通过ipc立即提供所有数据时。

有帮助吗?

解决方案

为什么不创建另一个帐户,使用与WFC服务和其他服务运行的ASPNET用户相同的权限集?这样,您就可以控制密码。

其他提示

为什么Windows服务需要以ASPNET用户身份运行?这是因为您正在使用需要来自呼叫者的身份验证的IPC连接吗?

另一种替代方法(如果您可以控制Windows服务代码)也可以将其作为WCF服务(在Windows服务中使用ServiceHost)。如果您需要类似IPC的性能,IIS服务可以使用NetTcp或NetNamedPipe绑定连接到Windows服务。

理想情况下,Windows服务应该作为WCF服务运行,这样客户端就可以轻松地与它进行通信。

下一个问题是'客户'需要成为WCF服务的天气。如果这个客户需要服务于其他应用程序,那么它是合适的,否则它可能不是必需的。我对你的系统知之甚少,所以由你来决定什么是最好的!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top