【发布时间】:2010-12-16 10:18:41
【问题描述】:
我正在尝试在 .NET 3.5 中构建一个同时支持 SOAP(并显示 WSDL)和 REST 的 C# 服务。
使用ServiceHost 和BasicHttpBinding 类很容易生成SOAP 服务和WSDL。成功了,客户很高兴。
由于 SOAP 调用都使用了简单的参数,客户端开发人员为某些命令请求了一个 REST 接口。因此,我将 ServiceHost 类更改为 WebServiceHost,添加了必要的 WebInvoke 和 WebGet 属性,添加了 WebHttpBinding 类,然后宾果游戏 - REST 和 SOAP 都在一个服务中工作。太酷了,换一个界面,REST 和 SOAP 都得到了新的东西。
但是有一个问题 - WSDL 不再生成。我无法浏览到 http://server/service?wsdl 并获取 WSDL 文件。检查 MSDN 文档,这似乎是默认 WebServiceHost 的行为。
问题:我可以覆盖此行为以便获取 WSDL 吗?不必使用与以前相同的 URL - 它可以更改 - 但我只需要为服务提供一些 URL 即可为那些 SOAP 开发人员获取 WSDL。
【问题讨论】:
-
您好 Jason,我很想知道您是否仍在使用这种方法,以及它如何为您工作或不工作。您是否发现必须复制任何方法(核心逻辑)来支持两者?
-
我只需要创建两个端点并为每个命令添加一个额外的属性。