.net - 在 PHP 中连接到具有 NetTCP 绑定(bind)和 BasicHttpBinding 的 WCF 服务

标签 .net php wcf nettcpbinding

我有一个 WCF 服务。它有多个客户端和三个端点。端点绑定(bind)是 nettcp、wsHttp 和 basicHttp。如果我尝试通过 php 内置的 SoapClient 类连接到它,如下所示:

$service = new SoapClient
("http://service.companyname.local:6666/Service/?wsdl",
 array(
         "location" => "http://service.companyname.local:6666/Service/Basic",

    "trace" => true,
    'soap_version' => SOAP_1_1
     )
);

我得到以下信息:

PHP Fatal error:  SOAP-ERROR: Parsing WSDL: PHP-SOAP doesn't support transport 'http://schemas.microsoft.com/soap/tcp' in c:\www\client.php on line 666

现在我的解决方法是手动保存 wsdl 并删除 nettcp 绑定(bind)。是否有允许我使用自动生成的 wsdl 的解决方法?我可以在 web.config 中隐藏来自 wsdl 的绑定(bind)吗?我可以在不同的绑定(bind)上生成不同的 wsdls 吗?我不想部署两个服务主机。

最佳答案

当您说您不想部署两个服务主机时,我假设您是在 Windows 服务中自托管单个 ServiceHost。我通过构建一个通用服务主机解决了这个问题,该主机可以在内部托管任意数量的服务实现(例如,它是配置中每个服务条目的新服务主机)。这样,我就可以根据需要在单个 Windows 服务中灵活地托管尽可能多的服务实现。这将通过允许您将 basicHttp 绑定(bind)服务与其他服务分开以保持 WSDL 清洁来解决您的问题。有一些关于此的开源示例(here 的一个)。

我能想到的唯一其他方法是公开您自己从 WsdlExporter 构建的自定义元数据端点(请参阅 here)

祝你好运!

关于.net - 在 PHP 中连接到具有 NetTCP 绑定(bind)和 BasicHttpBinding 的 WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1933213/

相关文章:

c# - 在 .NET Framework 4.6 中从 C# 使用 SIMD 操作速度较慢

php - 如何用PHP编写固定宽度的文本文件

php - 如何使用 Zend_Cache 标识符?

POST 后 PHP session_id() 发生变化

c# - 在 Web 服务中捕获 FaultException

WPF MVVM WCF 客户端/服务器架构

c# - 使用 File.Copy 时如何实现超时?

c# - 在 .NET 1.1 中获取编码列表

.net - 推荐.Net软实时

c# - WCF netTcpBinding 异步调用