找回密码
 立即注册
查看: 340|回复: 0

[其它] C# 进阶 - ASP.NET WebForms调用ASMX的WebService接口

[复制链接]

279

主题

0

回帖

964

积分

超级版主

积分
964
发表于 2024-7-8 11:38:04 | 显示全部楼层 |阅读模式
本帖最后由 Shaw0xyz 于 2024-7-8 12:15 编辑

1. 引言

在 ASP.net WebForms 中,调用 ASMX 的 WebService 接口是一个常见的需求。本文将详细介绍如何在 ASP.NET WebForms 项目中调用 ASMX WebService 接口,并通过实际代码示例展示这一过程。

2. 准备工作

在开始之前,请确保你已经安装了 Visual Studio,并创建了一个 ASP.NET WebForms 项目。

3. 创建 ASMX WebService

首先,我们需要创建一个 ASMX WebService。
1. 在解决方案中添加一个新的 ASMX 文件,命名为 `MyWebService.asmx`。
2. 在 `MyWebService.asmx.cs` 文件中定义一个简单的 WebService 方法,例如 `HelloWorld`。

示例代码如下:

  1. using System.Web.Services;

  2. [WebService(Namespace = "http://tempuri.org/")]
  3. [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  4. [System.ComponentModel.ToolboxItem(false)]
  5. public class MyWebService : WebService
  6. {
  7.     [WebMethod]
  8.     public string HelloWorld()
  9.     {
  10.         return "Hello, World!";
  11.     }
  12. }
复制代码


4. 配置 WebService

确保在 Web.config 文件中正确配置了 WebService,默认配置通常是可以满足需求的。

5. 在 WebForms 项目中添加 WebService 引用

1. 右键点击项目,选择“添加服务引用”。
2. 在弹出的对话框中,点击“高级...”。
3. 点击“添加 Web 引用...”,在 URL 栏中输入 ASMX WebService 的地址,例如 `http://localhost:port/MyWebService.asmx`。
4. 点击“转到”,确认找到服务后,给服务命名空间,例如 `MyService`,然后点击“添加引用”。

6. 调用 WebService

在 ASP.NET WebForms 页面中调用 WebService。

6.1 在代码隐藏文件中添加如下命名空间引用:

  1. using MyProject.MyService;
复制代码


6.2 在页面的代码隐藏文件中编写调用代码:

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3.     if (!IsPostBack)
  4.     {
  5.         MyWebServiceSoapClient client = new MyWebServiceSoapClient();
  6.         string result = client.HelloWorld();
  7.         Response.Write(result);
  8.     }
  9. }
复制代码


7. 错误处理

调用 WebService 时,可能会遇到各种错误,如网络错误、服务不可用等。为了提高应用的健壮性,需要进行错误处理。

  1. try
  2. {
  3.     MyWebServiceSoapClient client = new MyWebServiceSoapClient();
  4.     string result = client.HelloWorld();
  5.     Response.Write(result);
  6. }
  7. catch (Exception ex)
  8. {
  9.     Response.Write("Error: " + ex.Message);
  10. }
复制代码


8. 进阶用法

除了简单的字符串返回值外,WebService 还可以返回复杂的数据类型,如对象和集合。在 WebService 中定义一个返回复杂类型的方法,例如:

  1. [WebMethod]
  2. public Person GetPerson()
  3. {
  4.     return new Person { Name = "John Doe", Age = 30 };
  5. }
复制代码


在客户端调用时:

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3.     if (!IsPostBack)
  4.     {
  5.         try
  6.         {
  7.             MyWebServiceSoapClient client = new MyWebServiceSoapClient();
  8.             Person person = client.GetPerson();
  9.             Response.Write("Name: " + person.Name + ", Age: " + person.Age);
  10.         }
  11.         catch (Exception ex)
  12.         {
  13.             Response.Write("Error: " + ex.Message);
  14.         }
  15.     }
  16. }
复制代码


9. 结论

通过本文的介绍,读者可以了解到如何在 ASP.NET WebForms 项目中调用 ASMX WebService 接口,从而实现与 WebService 的交互。希望本文能帮助你更好地理解和应用这一技术。如果有任何问题或建议,欢迎讨论交流。








/ 荔枝学姐de课后专栏 /

Hi!这里是荔枝学姐~

欢迎来到我的课后专栏

自然语言学渣 NLP摆烂姐

热衷于技术写作 IT边角料

AIGC & Coding & linux ...

~互撩~ TG: @Shaw_0xyz
荔枝学姐爱吃荔枝!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系站长|Archiver|手机版|小黑屋|主机论坛

GMT+8, 2025-4-4 13:50 , Processed in 0.057339 second(s), 24 queries .

Powered by 主机论坛 HostSsss.Com

HostSsss.Com

快速回复 返回顶部 返回列表