0

我有一个用 C# 编写的 Windows 服务。我最近向它添加了CassiniDev,以允许远程 Web 管理和监视服务。除了我无法从托管的 ASP.NET 页面与我的 Windows 服务的数据层进行交互之外,集成进行得非常好。

我尝试将所有感兴趣的内容放入一个公共程序集中,但调试器显示有两个加载的程序集具有相同的名称但来自不同的路径。Cassini 在某个临时文件夹中运行 ASP.NET,因此我使用的程序集实际上是同一进程地址空间中的“不同实例”。

我不确定这里发生了什么。可能是我目前不理解的一些“应用程序域”分离的东西。

那么 Windows 服务和 web 服务器在同一个进程中运行,我怎样才能让它们交互呢?假设我在服务部分中有一些状态,我想在 ASP.NET 部分中报告。任何想法我怎么能做到这一点?想到共享内存或 TCP,但对于纯粹的进程内通信来说,这听起来有点过头了。

4

1 回答 1

1

如果安全不是一个直接的问题,即数据不是高度敏感的并且在受控环境中,那么您可以使用命名管道取得成功。用于处理管道的托管 API 已作为框架的一部分实现,因此您无需考虑本机调用。

于 2013-02-05T16:20:25.053 回答