zoukankan      html  css  js  c++  java
  • .NET Core 调用 WebService引用时出错

    0.使用背景#
    因为现在的项目都是基于 .NET Core 的,但是某些需要调用第三方的 WebService 服务。有些老的WebService接口在.NET Core中不能直接通过添加连接的服务进行引用,在引用时会出现各种奇葩报错,归根结底就是其文件下载不下来了,当初找了好久原因不知道怎么回事,最后看到一位大佬的博客找到了解决办法。其基本思路是通过微软提供的 Svcutil 工具生成代理类,然后通过 System.ServiceModel 来调用代理类所提供的对象与方法。此方法有一些局限性。如果Webservice接口更新的话不能即时更新,需要重新下载代理类,并且下载的代理类中的接口方法都是异步的。由于一直没有找到能在项目中直接引用的方法,所有只能先用此方法解决燃眉之急。如有博友有好的方法解决,望分享一下。

    1.配置准备#
    1.1 新建并编辑项目#
    首先新建一个新的 .NET Core 控制台程序,通过命令行窗口或者 Powershell 执行以下命令新建一个项目。

    dotnet new console

    如果是在已有项目中操作,直接到项目要根目录打开Powershell即可。注意:最好无论是新建还是在现有项目操作,推荐已管理员方式打开Powershell

    然后编辑项目文件 WebServiceConsole.csproj ,并在其中加入以下内容:
    <ItemGroup> <DotNetCliToolReference Include="dotnet-svcutil" Version="1.0.*" /> </ItemGroup>
    这样最终 WebServiceConsole.csproj 的内容会是这样子的。

    <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp2.1</TargetFramework> </PropertyGroup> <ItemGroup> <DotNetCliToolReference Include="dotnet-svcutil" Version="1.0.*" /> </ItemGroup> </Project>

    继续打开命令行窗口或者 Powershell 执行以下命令,还原项目文件的包。

    dotnet restore

    1.2 代理类生成#
    现在准备工作做好了,现在我们可以使用 dotnet svcutil 命令来生成代理类,或者你可以到 WindowsSDKs 的目录下找到 SvcUtil.exe 来执行代理类生成操作。

    dotnet svcutil [WebService 地址]

    上面是命令格式,比如说我这里有一个 WebService 提供的接口,其地址为 http://localhost:3000/bsp-oisp/ws/sfexpressService?wsdl ,那么我们需要打开命令行工具,执行以下命令来生成代理类。

    dotnet svcutil http://localhost:3000/bsp-oisp/ws/sfexpressService?wsdl](http://localhost:3000/bsp-oisp/ws/sfexpressService?wsdl

    成功之后会看到文件夹里面多了一个文件夹。
    注意,在生成代理类之后,我们还需要再执行一次 dotnet restore 来还原代理类当中所使用到的 NuGet 包。
    在调用Webservice会发现缺少一些引用,通过nuget下载System.ServiceModel.Http进行安装即可

    本文来源

  • 相关阅读:
    不懂区块链?先来看一下这篇
    ZooKeeper 分布式共享锁的实现
    关于 use-default-filters 属性的说明
    MapReduce 入门之一步步自实现词频统计功能
    Spring、SpringMVC、SpringData + JPA 整合详解
    使用 Hadoop 进行语料处理(面试题)
    顺序线性表 ---- ArrayList 源码解析及实现原理分析
    JPA + SpringData 操作数据库 ---- 深入了解 SpringData
    JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA
    JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA
  • 原文地址:https://www.cnblogs.com/fcppl/p/13902694.html
Copyright © 2011-2022 走看看