在.Net Core调用WebService

起因


最近在一个Web老项目加新的需求,所以想把老项目迁移Asp.Net Core上,老项目调用的服务都是WebService.所以在.Net Core测试调用WebService.

1. 创建.Net Core控制台项目(这里在命令行中创建),没有选择VS

dotnet new console

2.添加dotnet-svcutil ,在csproj文件添加

<ItemGroup>
    <DotNetCliToolReference Include="dotnet-svcutil" Version="1.0.*" />
</ItemGroup>

3.执行dotnet restore

dotnet restore

4. 使用命令生成代理类(在vs2019预览版一直没法生成)

dotnet svcutil http://localhost:53018/WebService1.asmx?wsdl

5. 调用WebService代码

using System;
using System.Threading.Tasks;

namespace ConsoleApp5
{
    class Program
    {
        static void Main(string[] args)
        {
            TestMethod();
            Console.ReadKey();
        }

        private static async Task TestMethod()
        {
            WebService1SoapClient webService1SoapClient = new WebService1SoapClient(WebService1SoapClient.EndpointConfiguration.WebService1Soap);
            var x = await webService1SoapClient.HelloWorldAsync();
            Console.WriteLine(x.Body.HelloWorldResult);
        }

    }
}

6. WebService代码

using System.Web.Services;

namespace qiufeng.webservice
{
    /// <summary>
    /// WebService1 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 
    // [System.Web.Script.Services.ScriptService]
    public class WebService1 : WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
    }
}

结果

目前生成服务代理类,只支持异步调用.这个有点麻烦.改天继续研究,怎么集成到项目.
秋风 2019-03-25