在使用HTTP的自托管WCF(非IIS)服务上托管文件或流数据?

时间:2009-01-24 17:20:50

标签: .net wcf

是否可以在自托管HTTP配置的WCF服务(例如自定义HTML或XML文件)上托管自定义数据,而不涉及IIS?我说的是一个实例化自己的EndPoints / listeners的ServiceHost实例。

我有一个使用自托管WCF服务的应用程序,它有一个Windows窗体客户端,但我正在考虑添加一个轻量级的Silverilght接口,但我不想使用IIS的原因与我不想使用成熟的SQL Server - 我试图让整个事情自我打包而没有IIS依赖。 (是的,我知道不涉及IIS不是最佳实践,因为它会使它更不可靠且不太灵活,但此功能不是其中的主要部分。)

如果无法做到这一点,我将不得不在服务器上完整的IIS或客户端上完整的WPF之间做出选择,我只是好奇,如果有人之前发现过这个。

谢谢,

乔恩

4 个答案:

答案 0 :(得分:1)

确定找到了答案。 [OperationContract]具有可以分配URL的WebGet属性。然后,与此属性关联的方法可以返回Stream对象。

此处示例:exposing cross-policy file as part of WCF service。 :)

有了这个,我就可以在一个单独的端口上使用Cassini来通过HTTP服务Silverlight .xap,并且仍然指向原始WCF URL处的WCF服务。从理论上讲,我甚至可能就此问题托管.xap并包含来自类似WCF接口的HTML,从而不再需要策略文件。

答案 1 :(得分:1)

我有一个可供下载的示例应用程序,其中包括演示如何从文件托管或流式传输数据以处理(使用WebGet属性)连接到自托管的Silverlight 2 RTM客户端的客户端访问策略要求WCF服务。

该解决方案包括示例Silverlight以及WPF客户端项目和控制台应用程序项目,该项目自托管双工WCF服务,并实例化从ServiceHost派生的类的实例,以便为不同类型的客户端公开适当的端点。 / p>

也许它可能有所帮助...

答案 2 :(得分:0)

您是否考虑了System.Net.HttpListener,甚至是Cassini?也许其中任何一个都可能为您提供所需的东西?

答案 3 :(得分:0)

在Windows服务中托管WCF组件会更好地适应您的用例吗?