Web Services 如何从.net控制台应用程序使用本地asmx web服务

eqoofvh9  于 2023-08-06  发布在  .NET
关注(0)|答案(1)|浏览(155)

我正在学习Web服务。我从基本模板. asmx开始。然后,我创建了一个.net控制台应用程序,并将Web引用添加到该应用程序。它看起来工作正常。但是我不知道如何在控制台内部调用这个服务并使用它的方法。
SoapDemo.asmx.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace soapdemo
{
    /// <summary>
    /// Summary description for WebService1
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.None)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {

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

        [WebMethod]
        public int SumOfNums(int FirstNumber, int SecondNumber)
        {
            return FirstNumber + SecondNumber;
        }

        [WebMethod(MessageName = "SumOfFloats")]

        public float SumOfNums(float FirstNumber, float SecondNumber)
        {
            return FirstNumber + SecondNumber;
        }
    }
}

字符串
Program.cs:

using SoapDemo;
namespace ConsoleClient3
{
    internal class Program
    {
        static void Main(string[] args)
        {
            WebService1SoapClient client = new WebService1SoapClient();
            
            //var add = client.HelloWorldAsync();
            //Console.WriteLine(add);
            //Console.ReadLine();

        }
    }
}


Connected Services控制台应用程序:


的数据


3zwjbxry

3zwjbxry1#

我希望您已将项目中的服务引用添加到客户端应用程序中。如果没有,请按照以下步骤添加。
1.右键单击客户端项目。
1.选择添加
1.选择服务引用。(将出现“添加服务引用”对话框。)

1.选择WCF Web服务并单击下一步。
1.在URI输入中添加服务的URI,然后单击下一步。


1.单击下一步

1.单击完成

这样,您就向客户端控制台应用程序添加了对服务的引用。
将Service Reference添加到客户端应用程序后,您可以访问服务的访问HelloWorld方法,如下所示:

using ServiceReference1;

namespace ConsoleClient3
{
    internal class Program
    {
        static void Main(string[] args)
        {
            WebService1SoapClient client = new(WebService1SoapClient.EndpointConfiguration.WebService1Soap);

            HelloWorldResponse result = client.HelloWorldAsync().Result;
           

            //var add = client.HelloWorldAsync();
            Console.WriteLine(result.Body.HelloWorldResult);
            //Console.ReadLine();
        }
    }
}

字符串
你得到的hello world结果是HelloWorldResponse。检查您的响应类型和结果在该对象。



类似地,按照以下示例调用SumOfNums方法

using ServiceReference1;

namespace ConsoleClient3
{
    internal class Program
    {
        static void Main(string[] args)
        {
            WebService1SoapClient client = new(WebService1SoapClient.EndpointConfiguration.WebService1Soap);

            int result = client.SumOfNumsAsync(1, 2).Result;

            Console.WriteLine(result);
        }
    }
}


在这里,返回类型是int,因此您可以直接将其打印为结果。



作为参考,asmx web服务代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace WebApplication1
{
    /// <summary>
    /// Summary description for WebService1
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
        [WebMethod]
        public int SumOfNums(int FirstNumber, int SecondNumber)
        {
            return FirstNumber + SecondNumber;
        }

    }
}


以上代码和操作在Visual Studio Enterprise 2022上执行。ASMX Web服务项目在.NET Framework 4.7.2上,控制台应用程序在.NET 7.0上

相关问题