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进行安装即可

    本文来源

  • 相关阅读:
    欧拉公式
    isap的一些想法
    错误合集
    Hello World
    PAT (Advanced Level) Practice 1068 Find More Coins
    PAT (Advanced Level) 1087 All Roads Lead to Rome
    PAT (Advanced Level) 1075 PAT Judge
    PAT (Advanced Level) 1067 Sort with Swap(0, i)
    PAT (Advanced Level) 1017 Queueing at Bank
    PAT (Advanced Level) 1025 PAT Ranking
  • 原文地址:https://www.cnblogs.com/fcppl/p/13902694.html
Copyright © 2011-2022 走看看