答案 0 :(得分:0)
尝试执行以下操作: 1.添加一个名为wsZipeee的新服务引用,指向Web服务 2.从呼叫位置(另一个Web应用程序,Winform等):
Dim ws as New wsZipeee.ZipeeeSoapClient()
Dim dsStandardMsg As DataSet
dsStandardMsg = ws.GetMessageByType(BizConstants.MsgType.Standard)
通过创建新的服务引用,这将处理代理并允许您干净地调用它。我假设您要调用的服务引用,Web服务和方法的名称
答案 1 :(得分:0)
如上所述,主站点使用代理DLL与Web服务进行通信。在Visual Studio中,每个代理项目都有一个Web引用(.wsdl文件等)和生成的app.config文件。在这两个代理项目中的一个中,app.config文件保留了原始设置(当然可以在我的桌面开发机器和我的登台Web服务器上运行):
<applicationSettings>
<ProxyZipeeeService.My.MySettings>
<setting name="ProxyZipeeeService_WSZipeee_Zipeee" serializeAs="String">
<value>http://localhost/ZipeeeWebService/Zipeee.asmx</value>
</setting>
</ProxyZipeeeService.My.MySettings>
</applicationSettings>
请注意上面的 localhost 值。
事实证明,当部署到生产服务器时,默认网站的主机标头值和同一IIS计算机上的另一个网站。后来我发现了更多关于这个设置的后果,并开始意识到当主站点试图通过localhost访问Web服务时,它失败了,因为找不到localhost的2个主机头值。因此,回到Vstudio并更改Web引用如下修复了问题:
<applicationSettings>
<ProxyZipeeeService.My.MySettings>
<setting name="ProxyZipeeeService_WSZipeee_Zipeee" serializeAs="String">
<value>http://www.zipeee.com/ZipeeeWebService/Zipeee.asmx</value>
</setting>
</ProxyZipeeeService.My.MySettings>
</applicationSettings>