C#教程
C#控制语句
C#函数
C#数组
C#面向对象
C#命名空间和异常
C#文件IO
C#集合
C#多线程
C#其它

C# WebServices

C# WebServices

简介

Web Service 被称为软件程序。这些服务在通用互联网协议的帮助下使用 XML 与其他软件交换信息。简单来说,我们使用 Web Service 通过 Internet 与对象进行交互。

以下是有关 Web Service 的一些要点。

Web 服务不依赖于任何特定语言。 Web 服务是独立于协议的。 Web 服务与平台无关。 Web 服务被称为无状态架构。这些服务仅依赖于给定的输入。 Web 服务也是可扩展的。 Web 服务基于 XML(开放的、基于文本的标准)。

Web 服务中使用的技术

XML: Web 服务仅指定数据。因此,了解有关编程语言或平台的 XML 的应用程序可以以不同的方式格式化 XML。
SOAP: 服务和应用程序之间的通信由 建立SOAP。
WSDL: WSDL 为我们提供了一种统一的方法,有助于为其他程序指定 Web 服务。
UDDI: 在 UDDI 的帮助下,我们可以搜索 Web 服务注册表。
在部署这些技术时,这允许开发人员将应用程序打包到服务的形式和服务在网络上的发布。

网络服务的优势

网络服务始终使用开放的、基于文本的标准。 Web 服务使用所有这些组件,即使它们是针对不同平台以各种语言编写的。 Web 服务促进了编程的模块化方法,以便多个组织可以使用同一个 Web 服务进行通信。 Web 服务易于实施但成本高昂,因为它们使用现有的基础架构,而且我们可以将大多数应用程序重新打包为 Web 服务。 Web 服务降低了企业应用集成和 B2B 通信的成本。 Web 服务是可互操作的组织,其中包含 100 家供应商并促进它们的互操作性。

Web 服务的限制

Web 服务的限制是:
Web 服务的局限性之一是 SOAP、WSDL、UDDI 需要开发。 对互操作性的支持也是 Web Service 的局限性。 网络服务的限制也是版税。 如果我们想在高性能情况下使用 Web 服务,在这种情况下,Web 服务会很慢。 网络服务的使用增加了网络上的流量。 Web 服务的安全级别较低。 我们使用标准程序来描述特定网络服务的质量。 Web 服务的标准处于草案形式。 供应商保留特定标准的知识产权也是网络服务的限制。

Web 服务示例

Web 服务几乎可以执行任何类型的任务。
Web 门户: 门户网站用于从链接的网络服务中获取标题新闻。
天气报告: 对于天气报告,我们将使用天气报告网络服务来显示信息关于我们网站上的天气。
股票报价: 有股票行情的股票行情可以在我们的网站上显示。
新闻标题: 通过使用新闻标题网络服务,我们可以在我们的网站上显示最新的新闻.
我们可以制作我们的网络服务并让它们重新使用。这里我们举一个例子,比如我们可以制作带有公司广告页脚的免费SMS发送服务。因此,任何人在使用本服务时,都会间接为我们公司做广告。为了利用Web 服务,我们可以应用N 个想法。
为了首先创建Web 服务,我们将考虑一个场景。要创建任何 Web 服务,首先,我们必须了解为什么需要 Web 服务。

对 Web Service 的需求

我们将考虑一个我们想在我们的网站上展示的场景。在我们的网站上,我们希望展示有关地区、国家和国际的信息。在这里,如果我们正在考虑为所有这些功能编写代码,那么为所有这些功能编写代码将需要大量的时间和精力。上述所有信息已经由一些现有站点提供,因此在这种情况下,我们希望使用其他站点的当前逻辑。但是出现了一个问题,如何在我的应用程序中使用现有的逻辑。
解决这个问题的方法是 Web 服务。
通过使用Web Service,我们可以重用别人的业务逻辑,而不是复制这个。要使用别人的业务逻辑,我们只需要写几行代码。这种技术类似于 API、DLL 和插件库。
API 和Web Service 是Web Service 远程位于另一台服务器上。
Web Service 可以被其他应用程序调用。 Web 服务被称为业务逻辑的部分,它托管在 Internet 上,其他应用程序可以使用它们。
这里我们有一些关于 Web 服务的要点。
注意: 注意1: Web 服务不仅限于.Net 框架。 Web 服务的标准在 .NET 发布之前就已经定义好了。 Web 服务并由 Microsoft 以外的供应商提供支持。
注意: 注意: 2: Web Services 也可以跨平台工作。如果服务是用一种语言编写的,尽管其他应用程序可以使用这些服务,并且该应用程序使用另一种语言。如果我们想使用 Web 服务,唯一的方法是我们只需要 Internet 连接到我们将发出 HTTP 请求的位置。
我们知道 Web Service 是跨平台的,但尽管如此,还是应该有一种易于理解的语言,以便我们可以对服务提出请求,并在他们的回复。 Web 服务使用易于理解的 XML。
这是使用基于 XML 的数据交换标准构建 Web 服务的唯一原因。
Web 服务使用数据类型集。 XML 模式很容易识别这些数据类型。
Web 服务使用简单的数据类型,如字符串和数字。这些数据类型有助于与 Web 服务通信。而且我们不能发送专有的 .NET 对象,如图像、文件流或事件日志。其他编程语言无法联系这些 .NET 对象。如果我们使用一些设备将它们发送到客户端,不同的编程语言仍然无法解释。
注意: 注意: 3 如果我们想使用 .NET 对象,我们可以使用 .NET 远程处理。 .NET 远程处理被称为分布式技术,通过它我们可以使用 .NET 对象。但是非 .NET 客户端不能使用它。

Web 服务支持的数据类型。

内置类型(基本):
Web 服务使用的数据类型是:
Web 服务使用内置的 C# 数据类型,如 short、int、long、 short、float、char、byte、string 和 DateTime。
对象: WPF 使用用户定义类的对象。尽管该类包含方法,但该类将无法传输到客户端。 数组: WPF 使用任何支持的数据类型(内置或自定义)的数组。我们也可以在 WPF 中使用 ArrayList。 枚举: WPF 支持枚举。对于枚举值,WPF 使用字符串名称。 WPF 不会使用整数。 XmlNode: 基于 System.Xml.XmlNode 的对象表示 XML 文档的一部分。我们可以使用 XmlNode 发送任意 XML。
DataSet 和 DataTable: WPF 支持 dataSet 和 DataTable,但 WPF 不支持 ADO.NET 数据对象,如 DataColumns 和 DataRows。

创建 Web 服务

一个简单的 asmx 页面称为 Web 服务。对于 Web 服务的创建,我们将使用 Visual Studio 2017,它使用 .NET Framework 4.8、对于创建 Web 服务,我们将遵循以下步骤:
步骤 1: 首先,我们将创建一个用于创建 Web 服务的 Web 应用程序。
为此,我们将单击在 File-> Select Project 上,如下图所示:
How to create Web Service
之后,新窗口将打开,如下面的屏幕截图所示:
从这里开始,我们将选择 Web->Asp.Net Web 应用程序->Web 应用程序的名称-> 单击确定。
How to create Web Service
之后会出现一个新窗口,如下所示:
How to create Web Service
为了创建Web Service,我们将右键单击项目名称->单击Add-> Add New Item。如下图所示:
How to create Web Service
此后,将出现一个新窗口。从那里我们必须单击 Web-> 选择 Web Service(.asmx 页面)-> 将 Web Service 命名为如下图所示:
How to create Web Service
将 Web Service 添加到应用程序后,将出现一个新窗口,如下所示:
How to create Web Service
Visual Studio 创建不可更改的 Web 服务-分析

默认代码说明

[WebService(Namespace="http://tempuri.org/") )]
基于 XML 的 Web 服务要求客户​​端应用程序具有唯一的命名空间,这有助于将 Web 服务与 Web 上的其他服务区分开来。 Web 服务使用默认命名空间,即 tempura.org。此命名空间可用于正在开发的 XML Web services。将要发布的 XML Web Services 应该使用永久命名空间。 Web Services 的实例应该用其他 URI 替换它,这在生产系统中更有意义。
我们将 Web Service 标识为 Web Service 中使用的命名空间;它的公司将控制命名空间。这里我们以公司的 Internet 域名为例,我们可以将其用作命名空间的一部分——XML Web 服务的命名空间,它看起来像 URL。我们使用 URL 来指出 Web 上的实际资源。
注意事项:
以下是创建 Web 服务时应注意的一些事项。
我们不能有多个 [WebService] 标签。 命名空间的变化不会影响命名空间。
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
Web 服务不支持直接方法重载。为了允许 Web 服务中的方法重载,我们必须添加 MessageName 属性来区分 Web 服务中使用的一种方法和另一种方法,后者具有相同的名称和使用的参数。
[WebServiceBinding(ConformsTo= WsiProfiles.BasicProfile1_1)] 到 [WebServiceBinding(ConformsTo = WsiProfiles.None)]。
[WebMethod]
        public int SumOfNums(int FirstNumber, int SecondNumber)
        {
            return FirstNumber + SecondNumber;
        }
//here we will use MessageName property to do the differentiation between both of the methods.
        [WebMethod(MessageName = "SumOffloats")]
        public float SumOfNums(float FirstNumber, float SecondNumber)
        {
            return FirstNumber + SecondNumber;
        }
如果我们想从脚本调用Web服务,我们将使用ASP.NET,AJAX 并取消注释以下行。
[System.Web.Script.Services.ScriptService]
[WebMethod]
这个属性总是用在方法的顶部。我们将这个属性写在 Web Service 中。 [WebMethod] 属性用于定义使用该属性的方法暴露给用户/客户端访问。
如果我们删除此属性,在这种情况下,客户端将无法看到详细信息方法的;

代理类或WSDL

WSDL(Web Service Development Language)文档用于生成Web Service的代理类。 WSDL 文档定义了 Web Service。 WSDL 文档包含
Web 服务公开的所有方法。 WSDL 文档包含参数及其类型。 WSDL 文档包含方法的返回类型。
Visual Studio 使用该信息创建代理类。客户端应用程序将调用代理类方法。代理类将序列化参数,准备 SOAP 请求消息并将其发送到 Web 服务。 Web Service 执行此方法并将 SOAP 返回消息返回给代理。然后代理类将反序列化 SOAP 响应消息并将其提供给客户端应用程序。不需要将 dot net CLR 对象与 SOAP 格式进行序列化或反序列化。代理类承担了序列化和反序列化的所有责任,这让开发者的生活变得轻松。
现在我们将看到 WebService1.asmx.cs 窗口:
1. WebService.asmx.cs 页面包括 System.Web.Services,,它还包含由 Visual Studio 包含在 Web 应用程序中的其他四个命名空间。
2. "Service1" 类继承自"System.Web.Services.WebServices"。从"System.Web.Services.WebService"继承类后,我们可以访问内置的ASP.Net对象,例如(应用程序、会话、用户、上下文、服务器)。如果不需要.NET的内置对象,那么也不需要"WebService"中的服务类。
3. "Service1" 包括"WebService"属性。如果我们想将任何类公开为服务,那么还需要包含"WebService"的属性。
WebService 属性包含不同的属性,例如:
NameSpace: 命名空间属性的使用使服务具有唯一可识别性。 nameSpace 是 XML 的属性。客户端应用程序可以包含不同的服务,所以这就是可能发生冲突的原因。为避免冲突,提供者有责任使命名空间唯一。
名称: 通过使用 Name 属性,我们将为服务提供描述性名称。
描述: 此属性用于避免对服务的简短描述。
4. "Service1"还包含另一个属性,即"WebServiceBinding"。这用于指示服务的标准。如果服务不遵循此标准,我们将得到一个例外。
5.对于 Service,又增加了一个属性,即"[System.Web.Script.Services.ScriptService]",为了使 Service 可以从客户端脚本访问,Services 应该用这个 Service 装饰。
6. "Service1"类包含一个方法"Hello World"。此方法用"[WebMethod]"属性修饰。客户端应用程序访问服务方法。客户端应用程序应添加"Service1"方法。
服务可能会使用某种方法实现内部功能。客户端应用程序不需要使用它们。没有必要将这些方法与 Web Method 属性一起使用。
WebMethod 属性包含 Name 和 Description 属性,我们可以使用它们分别提供自描述名称或描述。

标记

现在我们将看到标记。
对于标记,我们必须右键单击 Service1在解决方案资源管理器的窗口中选择 .asmx 并选择视图标记,如下面的屏幕截图所示:
How to create Web Service
在Service1.asmx中,我们会看到Service使用了带有属性的WebService指令。从这里开始,这将向我们展示应用程序调用服务,而不是由最终用户调用。因此 asmx 页面没有标记。

Service1.asmx

<%@ WebService Language="C#" CodeBehind="Service1.asmx.cs" Class="WebApplication7.Service1" %>
这里是关于 Service1.asmx 的一些要点。
"Web 服务" 指令: 该指令表明 asmx 页面是一个网络服务。 "Language"="C#": 这表明服务使用 C# 语言。 "CodeBehind": 此属性对 ASP.NET 或 Web 服务没有任何作用。 CodeBehind 是 Visual Studio 的属性。此属性用于将 asmx 页面与页面背后的代码进行映射。 "Class" 属性包含类的限定名称。这是Service的入口点,就像C语言中的main()一样。
现在我们将在按下按钮 F5 后运行这个应用程序。各不相同)。此处将找到服务描述的链接,如下面的屏幕截图所示:
How to create Web Service
点击 Service Description 的链接后,这会将我们重定向到 Service 的 WSDL 文档,如下面的屏幕截图所示:
如何创建 Web 服务
还有另一个指向 HelloWorld 的链接。单击此链接后,这会将我们重定向到测试页面。
How to create Web Service
点击此链接后,这会将我们重定向到 Service1 Web Service 页面进行测试。
如何创建Web Service

Web Service 的实现

现在我们将实现Service。现在我们将解决方案资源管理器中的文件"Service1"重命名为"MyService"。这里我们将类名从 Service1 改为 MyService。现在我们将打开标记(.asmx)页面。
How to create Web Service
从上面的截图中,我们会看到visual Studio无法解析类属性中的"Service1"。这里的类显示了服务的完全限定名称,我们将 Service1 类重命名为 MyService,但 Visual Studio 无法解析它。
这里我们将类的属性更改为"Web application.MyService",并将将"CodeBehind"属性从"Service1.asmx.cs"更改为"MyService.asmx.cs",就像我们命名文件一样。

MyService.asmx

<%@ WebService Language="C#" CodeBehind="MyService.asmx.cs" Class="WebApplication7.MyService" %>

MyService.asmx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Script.Serialization;
namespace WebApplication7
{
    /// <summary>
    /// Summary description for Service1
    /// </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 MyService : System.Web.Services.WebService
    {
        [WebMethod]
        public int SumOfNums(int First, int Second)
        {
            return First + Second;
        }
    }
}
此后,服务就可以使用了。现在我们将编译并运行此应用程序。
编译后将打开一个新窗口,如下面的屏幕截图所示:
如何创建 Web 服务

Web 服务的测试

现在我们将通过单击 F5 来运行应用程序按钮。 http://localhost:62639/MyService.asmx 页面将打开。该页面将包含服务描述(WSDL 文档、Web 服务文档)的链接,并包含 SumOfNums 的另一个链接。该页面是 SumOfNums 方法的测试页面,如下图所示:
How to create Web Service
现在我们将使用OOP(面向对象编程概念)概念的方法重载。现在我们在 MyService 类中添加 WebMethod。

MyService.asmx.cs

using System;
using System.Collections.Generic;
using System. Linq;
using System. Web;
using System.Web.Services;
using System.Web.Script.Serialization;
namespace WebApplication7
{
    /// <summary>
    /// Summary description for Service1
    /// </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 MyService : System.Web.Services.WebService
    {
        
        [WebMethod(MessageName = "SumOffloats")]
        public float SumOfNums(float First, float Second)
        {
            return First + Second;
        }
    }
}
现在我们将通过按 F5 按钮运行此应用程序。 http://localhost:62639/MyService.asmx 页面将打开,其中包含服务描述链接(WSDL 文档、Web 服务文档)。这里我们有另一个链接 SumOfNums,它是 SumOfNums 方法的测试页面,如下图所示:
How to create Web Service
在第一个文本框和第二个文本框中输入值后,这将调用如下图所示的方法:
How to create Web Service

方法重载

现在我们将使用重载服务中的方法。 Web 服务不支持方法重载。在方法重载的情况下,这将引发错误。这里我们举个例子来展示一下Web Service中进行的方法重载,由于不支持重载而抛出错误。

MyService.asmx.cs

using System;
using System.Collections.Generic;
using System. Linq;
using System. Web;
using System.Web.Services;
using System.Web.Script.Serialization;
namespace WebApplication7
{
    /// <summary>
    /// Summary description for Service1
    /// </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 MyService : System.Web.Services.WebService
    {
        [WebMethod]
        public int SumOfNums(int First, int Second)
        {
            return First + Second;
        }
        [WebMethod(MessageName = "SumOffloats")]
        public float SumOfNums(float First, float Second)
        {
            return First + Second;
        }
    }
}
输出
如何创建网络服务
在上面的示例中,Web Service 不支持方法重载,并显示服务"WebApplication7.MyService"不符合 WS-I Basic Profile v1.1 的错误消息。现在为了支持重载方法,我们必须遵循以下步骤,或者我们必须删除"[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]",或者我们有做一些改变"[WebServiceBinding(ConformsTo = WsiProfiles.None)]"。
为了支持重载方法,我们必须在代码中做一些改变,如方框所示突出显示:
using System;
using System.Collections.Generic;
using System. Linq;
using System. Web;
using System.Web.Services;
using System.Web.Script.Serialization;
namespace WebApplication7
{
    /// <summary>
    /// Summary description for Service1
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    //make the WsiProfiles to None 
    [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 MyService : System.Web.Services.WebService
    {
        [WebMethod]
        public int SumOfNums(int First, int Second)
        {
            return First + Second;
        }
//here we have to add the MessageName property to make the difference between both of the methods.  
        [WebMethod(MessageName = "SumOffloats")]
        public float SumOfNums(float First, float Second)
        {
            return First + Second;
        }
    }
}
完成所有这些更改后,Web 服务将如下面的屏幕截图所示:
如何创建 Web Service
这里的 Web Service 支持同名的方法。通过添加消息名称属性,我们可以创建两种方法之间的差异。
通过使用上述属性,我们可以在Web Service中使用方法重载。

页面测试

点击 SumOfFloats 后,页面将重定向到 http://localhost:62639/MyService.asmx?op=SumOfFloats 在这里我们将看到"?op=SumOfNums"附加到服务 URL。此页面包含两个输入值(First、Second)的两个文本框,其中 SumOfNums 值将作为输入参数和"调用"按钮。单击此调用按钮后,我们将重定向到 http://localhost:62639/MyService.asmx/SumOfFloats,它具有 SumOfNums 方法返回 XML 格式的值。
How to create Web Service
点击调用按钮后,我们将重定向到http://localhost:62639/MyService.asmx/SumOfFloats 页面。此页面包含 XML 格式的值。
如何创建 Web 服务
同样,点击"SumOfNums MessageName="SumOfFloats""后。我们将重定向到 "http://localhost:62639/MyService.asmx?op=SumOfFloats" 。因此,"SumOfNums MessageName="SumOfFloat"" 方法被称为客户端应用程序的"SumOfFloats"。
这里有一个问题来自测试页面的来源。因为我们没有添加标记,但仍然呈现页面。
测试页面不是 Web 服务的一部分。测试页由 ASP.NET 使用网页 c:\[WinDir]\Microsoft 呈现。 NET\Framework\ [版本] \Config\DefaultWsdlHelpGenerator.aspx。 "反射"概念呈现给测试页面。

WSDL 文档

Web 服务是自描述的,这意味着 ASP.Net 本身为我们提供了所有需要的信息使客户端以 WSDL 文档的形式使用 Web 服务。 WSDL 文档告诉客户端 Web 服务中存在的方法。以及方法使用的参数和返回值以及客户端应用程序如何与它们通信。 WSDL 是一个 XML 标准。

Web 服务的托管

对于 Web 服务的托管,我们将添加对服务的引用并从不同的应用。这里我们假设端口号可以变化,所以现在我们将在 IIS(Internet 信息服务器)上托管服务以获取服务器的特定地址。为此,我们将打开 Internet Information Server-> 转到默认网站-> 右键单击​​应用程序-> 添加应用程序-> 浏览到我们服务的物理位置以获取物理路径字段-> 点击"确定"。现在我们将使用别名 http://localhost/WebServiceDemo/ 浏览应用程序进行测试如果应用程序被正确托管。在这里我们会得到一个错误"HTTP Error 403.14-Forbidden"。这个错误是因为没有为此应用程序设置任何默认文档。现在我们将添加一个页面作为默认文档"MyService.asmx"。现在我们可以通过在浏览器 localhost/WebServiceDemo/MyService.asmx 中添加这个 URL 来浏览我们的应用程序。

从客户端脚本使用 Web 服务

我们可以在任何类型的应用程序中使用 Web 服务。在这里,我们将创建一个应用程序 .Net Web 应用程序。为此,我们将遵循以下步骤:
Step1: 右键单击解决方案资源管理器->添加->新建项目,如下面的屏幕截图所示:
How to create Web Service
Step2: 点击新建项目后,将出现一个新窗口打开如下图所示:
How to create Web Service
Step 3. 在此之后,为了与 Web 服务通信,我们必须创建一个代理类。要创建代理类,我们必须遵循以下步骤:

代理类

要创建代理类,我们必须右键单击引用->选择添加服务引用,如下图所示:
How to create Web Service
点击添加服务引用后,将出现一个新窗口,如下图所示:
How to create Web Service

上面窗口的说明:

地址: 这里,我们将粘贴我们创建的 Web 服务,然后点击 Go。
点击 Go 按钮后,这将搜索提供的地址。
Namespace:命名空间,我们将提供服务的名称,然后单击"确定"按钮。这将在项目中添加对 Web 服务的引用。
现在我们将在我们的应用程序中添加 Web 窗体。为此,我们将遵循以下步骤:
1.右键单击解决方案资源管理器中的项目-> 选择添加-> 选择 Web 表单,如下图所示:
How to create Web Service
点击 Web 表单后,这将打开一个新窗口,我们必须在其中提供 Web 表单的名称,如下面的屏幕截图所示:
如何创建Web服务
在上面的截图中,我们给出了Web表单的名称,然后点击OK .
在Web Form中,我们将在Web Service的帮助下创建一个使用预定义方法的表。
在WebForm1.aspx中,我们做了如下编码如以下代码所示:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="CalculatorWebApplication.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <table style="font-family:Arial">
            <tr>
                <td>
                    <b>First Number</b>
                </td>
                <td>
                    <asp:TextBox ID="txtFirstNumber" runat="server"></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td>
                    <b>Second Number</b>
                </td>
                <td>
                    <asp:TextBox ID="txtSecondNumber" runat="server"></asp:TextBox>
                </td>
            </tr>
             <tr>
                <td>
                    <b>Result</b>
                </td>
                <td>
                    <asp:Label ID="lblResult" runat="server" Text="Label"></asp:Label>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:Button ID="btnadd" runat="server" Text="Add" OnClick="btnadd_Click" />
                    </td>
                    
            </tr>
        </table>
    </form>
</body>
</html>
在上面的代码中,创建一个表格,我们将两个文本框textbox1 用于输入firstnumber,textbox2 用于输入SecondNumber。
以上代码的设计视图如下图所示:
如何创建 Web 服务
这里我们使用了两个文本框来输入第一个数字和第二个数字。添加按钮用于添加两个文本框的值。
双击添加按钮后,这将切换到编码页面。页面为WebForm.aspx.cs。
为了使用Web Service的方法,我们将在按钮点击时做如下代码。

WebForm. aspx.cs

using System;
using System.Collections.Generic;
using System. Linq;
using System. Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace CalculatorWebApplication
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
        protected void btnadd_Click(object sender, EventArgs e)
        {
            CalculatorService.CalculatorWebServiceSoapClient client = new CalculatorService.CalculatorWebServiceSoapClient();
           int result= client.Add(Convert.ToInt32(txtFirstNumber.Text),
                Convert.ToInt32(txtSecondNumber.Text));
            lblResult.Text = result.ToString();
        }
    }
}
现在我们将按 F5 启动 Web 服务。输出将如下面的屏幕截图所示:
OutPut
如何创建 Web 服务

总结

在这里,我们获得了此应用程序中 Web 服务的好处。我们没有为两个数字的相加编写任何逻辑。在我们的计算器 Web 应用程序中,我们只是使用了 Web 服务的方法。我们没有使用任何逻辑进行添加。上面的截图显示了两个数字相加的输出,即 23、
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4