【问题标题】:Changing binding of WCF service hosted in Web role in azure cloud service在 Azure 云服务中更改托管在 Web 角色中的 WCF 服务的绑定
【发布时间】:2013-08-23 10:49:42
【问题描述】:
我在 Azure 云服务的 Web 角色内创建了 WCF Web 服务。我通过在云上部署云服务并让客户端应用程序调用该服务来验证实现的完整性。但是,当我查看托管 WCF Web 服务的 Web 角色的 web.config 时,我找不到对 Web 服务的任何引用。在哪里可以找到与 Web 服务相关的配置?显然,托管在 Web 角色中的 Web 服务使用 HTTP 绑定;我需要更改我的服务绑定以使用 JSON 进行所有通信。你能告诉我如何实现这一目标吗?
【问题讨论】:
标签:
wcf
azure
wcf-binding
【解决方案1】:
您现在可能正在使用 basicHttpBinding - 这是 WCF 对 HTTP 的默认设置。在 web.config 中看不到对服务的引用的原因是 .NET Framework 4.0 中引入了 simplified configuration。如果需要,您仍然可以像在早期版本中一样在 web.config 中显式配置服务,但这不是必需的。
要按照您的要求进行操作,您需要执行以下操作:
更改协议映射以使用 webHttpBinding 而不是 basicHttpBinding。
添加一个 webHttp 端点行为并将 DefaultOutgoingResponseFormat 设置为“Json”。
更改您的 .svc 标记文件以包含 Factory 属性并指定 WebServiceHostFactory。例如:
Factory="System.ServiceModel.Activation.WebServiceHostFactory"
最后,将 [WebGet] 属性添加到服务合同中的方法中。