【问题标题】:Host files or stream data on a self-hosted WCF (non-IIS) service that uses HTTP?在使用 HTTP 的自托管 WCF(非 IIS)服务上托管文件或流数据?
【发布时间】:2009-01-24 17:20:50
【问题描述】:

是否可以在不涉及 IIS 的情况下在自托管 HTTP 配置的 WCF 服务上托管自定义数据,例如自定义 HTML 或 XML 文件?我说的是实例化自己的端点/侦听器的 ServiceHost 实例。

我有一个使用自托管 WCF 服务的应用程序,它有一个 Windows 窗体客户端,但我也在考虑添加一个轻量级 Silverilght 界面,但我不想使用 IIS,原因与我不想使用成熟的 SQL Server——我试图让整个东西在没有 IIS 依赖的情况下自行打包。 (是的,我知道不涉及 IIS 并不是最佳实践,因为它会降低可靠性和灵活性,但此功能不是其中的主要部分。)

如果这不可能,我将不得不在服务器上的完整 IIS 或客户端上的完整 WPF 之间进行选择,我只是好奇之前是否有人发现过这个。

谢谢,

乔恩

【问题讨论】:

  • 这真的会部署在没有安装 IIS 的服务器上吗?我并不完全支持 Silverlight/WCF 集成,但它真的需要在 IIS 中托管任何 WCF 服务吗? WCF 有很多托管选项...

标签: .net wcf


【解决方案1】:

好的,找到了我的答案。 [OperationContract] 有一个 WebGet 属性,您可以分配一个 URL。与此属性关联的方法可以返回一个 Stream 对象。

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

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

【讨论】:

    【解决方案2】:

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

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

    或许对你有帮助……

    【讨论】:

      【解决方案3】:

      您是否查看过System.Net.HttpListener,甚至Cassini?也许其中任何一个都可以满足您的需求?

      【讨论】:

        【解决方案4】:

        在 Windows 服务中托管 WCF 组件是否更适合您的用例?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-12-13
          • 2012-07-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多