【发布时间】:2020-02-12 23:31:03
【问题描述】:
我需要从 .net 核心 web api 调用旧的 asmx web 服务(我无法控制)
有可能吗?
谢谢
【问题讨论】:
我需要从 .net 核心 web api 调用旧的 asmx web 服务(我无法控制)
有可能吗?
谢谢
【问题讨论】:
我能够做到这一点的方式是完全更新 Visual Studio 2017,然后从这里获取最新的 WCF 连接服务扩展: https://marketplace.visualstudio.com/items?itemName=WCFCORETEAM.VisualStudioWCFConnectedService
完成此操作后,我可以像这样添加和调用 SOAP 服务。
右键单击 Connected Services 文件夹(应该出现在您的项目下方)并选择 Add Connected Service。然后选择“添加 WCF Web 服务”。将您的 asmx url 放入 URI 字段,设置名称空间并单击 Finish。您现在将拥有参考集。
我的代码的一个示例...
如果您没有授权标头,则可以忽略该部分:
MySoapClient.EndpointConfiguration endpoint = new MySoapClient.EndpointConfiguration();
MySoapClient myService = new MySoapClient(endpoint, myURL);
AuthorizationSoapHeader MyAuthHeader = new AuthorizationSoapHeader();
MyAuthHeader.AppName = FDSServiceAppName;
MyAuthHeader.AppID = Guid.Parse(MyAppID);
Entry[] entries = MyService.GetUsers().Result;
【讨论】:
接受的答案是 100% 正确的,但是当我尝试使用 VS WCF 连接服务添加 ASMX Web 服务时,我遇到了一个问题,但最初对我来说并不明显。
在我的例子中,我尝试连接的 Web 服务禁用了 Web.config 中的 WSDL。我必须在 Web.config 中删除或注释掉以下内容,才能成功导入元数据并构建代码脚手架。
<webServices>
<protocols>
<!-- <remove name="Documentation" /> -->
</protocols>
</webServices>
一旦<remove name="Documentation" /> 像上面的示例一样被删除或注释掉,ASMX 服务将能够添加到您的项目中。
【讨论】: