【发布时间】:2010-10-31 00:09:40
【问题描述】:
有一个带有配置的 WCF 服务:
<services>
<service name="MyService" behaviorConfiguration="MyServiceBehavior">
<endpoint
binding="basicHttpBinding"
contract="IMyService" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8001/MyService" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<serviceMetadata httpGetEnabled="True" />
</behavior>
</serviceBehaviors>
</behaviors>
这个脚本应该调用它:
Option Explicit
Dim soapClient
Dim serviceUri
Dim serviceName
Dim portName
Dim result
serviceUri = "http://localhost:8001/MyService"
serviceName = "MyService"
portName = "BasicHttpBinding_IMyService"
Set soapClient = CreateObject("MSSOAP.soapClient")
soapClient.ClientProperty("ServerHTTPRequest") = True
soapClient.mssoapinit serviceUri & "?WSDL", serviceName, portName
运行脚本时出现此错误:
客户端:WSDLReader:分析 WSDL 文件失败 HRESULT=0x8 0004005 - WSDLReader:服务初始化失败 HRESULT=0x80004005 - WSDL 服务:服务 MyService 的端口初始化失败 HRESULT =0x80004005 - WSDLPort:分析端口 BasicHttpBinding_IMyService 的绑定信息失败 HRESULT=0x80004005 - WSDLPort:无法初始化端口 BasicHttpBinding_IMyService 的操作 HRESULT=0x8000 4005 - WSDLOperation:操作 //def:portType[@name="IMyService"]/ def:operation[@name="MyMethod"] 在 porttype 部分中找不到 HRESULT=0x80004005
出了什么问题?请帮忙。
编辑:
感谢 Cheeso 的回答。 MSSOAP 的问题似乎在于它要求所有 xsd 模式都内嵌在生成的 WSDL 文件中。 WCF 默认不这样做。
【问题讨论】:
-
如果您想要 WSDL 中的 XSD,您可以修改 WCF 服务以“扁平化”它。 bing.com/search?q=Wcf+flatten+wsdl 如果您无法控制 WCF 端,您仍然可以构建一个整体的并且应该可以工作的 WSDL。但 MSSOAP 还存在其他更严重的问题。