C# 创建WebService接口并连接

news2025/1/15 14:29:49

创建WebService项目

首先安装下.NET Framework4.6.2-4.7.1开发工具。
在这里插入图片描述
然后就是新建 ASP.NET Web应用程序 项目。
在这里插入图片描述
输入项目名称WebServiceDemo
在这里插入图片描述选择空,然后先去掉HTTPS配置。
在这里插入图片描述
项目创建好之后,开始添加asmx文件.
在这里插入图片描述
添加好之后在添加一个有参数的名为Hello的方法。代码如下图。

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

namespace WebServiceDemo
{
    /// <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 : System.Web.Services.WebService
    {

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

然后就可以直接启动了,也可以发布到IIS中启动。这里先发布到IIS,一会在新建一个控制台项目用于连接到该服务。
发布好之后在IIS中添加网站,并绑定端口号为81.然后就可以启动了。
直接启动的话可能会报下面的错误,这是因为没有设置起始页。
在这里插入图片描述
可以直接输入地址访问。

http://localhost:81/webservice1.asmx

也可以在IIS默认文档中添加webservice1.asmx文件。下次在浏览就可以直接打开了。
在这里插入图片描述
出现下图的页面,就表示服务已经部署成功了。
在这里插入图片描述

连接到WebService服务

新建一个控制台应用。
然后打开webservice地址输入。

http://localhost:81/webservice1.asmx?wsdl

会打开一个xml文件。
在这里插入图片描述
接着右键文件另存为,把文件保存下来。并修改文件后缀名为wsdl
在这里插入图片描述
在VS中添加,添加服务引用。选择WCF Web Service。
在这里插入图片描述
这里其实可以直接输入WebService的地址点击转到即可。当考虑到要连接的服务在本地不一定是可以访问的,所以我们可以点击浏览通过上面生成的wsdl文件来生成对应的代码。
在这里插入图片描述
添加进来后如下图所示,命名空间可以按照实际名称修改。
在这里插入图片描述
之后点击下一步,然后点击完成即可。
在这里插入图片描述
完成之后这里就多了两个文件。
在这里插入图片描述
调用方式如下,直接实例化对应的类,然后就可以像调用普通方法一样,调用远程的服务接口了。

using ServiceReference1;
using System;
using System.Threading.Tasks;

namespace TestProject
{
    public class Program
    {
        static async Task Main(string[] args)
        {
           await Test();
        }
        public static async Task Test()
        {
            var reference = new WebService1SoapClient(WebService1SoapClient.EndpointConfiguration.WebService1Soap12);
            var helloWorldResult = await reference.HelloWorldAsync();
            Console.WriteLine(helloWorldResult.Body.HelloWorldResult);
            var str = "张三";
            var helloResult = await reference.HelloAsync(str);
            Console.WriteLine(helloResult.Body.HelloResult);
        }
    }
   
}

返回结果如下,就像调用本地方法一样自然。
在这里插入图片描述

不过这里应该有地方需要按需修改一下,在Reference.cs文件中,远程服务地址是写死的。所以需要改成参数。

 private static System.ServiceModel.EndpointAddress GetEndpointAddress(EndpointConfiguration endpointConfiguration)
        {
            if ((endpointConfiguration == EndpointConfiguration.WebService1Soap))
            {
                return new System.ServiceModel.EndpointAddress("http://localhost:81/webservice1.asmx");
            }
            if ((endpointConfiguration == EndpointConfiguration.WebService1Soap12))
            {
                return new System.ServiceModel.EndpointAddress("http://localhost:81/webservice1.asmx");
            }
            throw new System.InvalidOperationException(string.Format("找不到名称为“{0}”的终结点。", endpointConfiguration));
        }

改造方法也简单。添加一个url的入参。

private static System.ServiceModel.EndpointAddress GetEndpointAddress(string url,EndpointConfiguration endpointConfiguration)
    {
        if ((endpointConfiguration == EndpointConfiguration.WebService1Soap))
        {
            return new System.ServiceModel.EndpointAddress(url);
        }
        if ((endpointConfiguration == EndpointConfiguration.WebService1Soap12))
        {
            return new System.ServiceModel.EndpointAddress(url);
        }
        throw new System.InvalidOperationException(string.Format("找不到名称为“{0}”的终结点。", endpointConfiguration));
    }

以及引用这个方法的这里都加上url。

    public WebService1SoapClient(string url, EndpointConfiguration endpointConfiguration) : 
            base(WebService1SoapClient.GetBindingForEndpoint(endpointConfiguration), WebService1SoapClient.GetEndpointAddress(url,endpointConfiguration))
    {
        this.Endpoint.Name = endpointConfiguration.ToString();
        ConfigureEndpoint(this.Endpoint, this.ClientCredentials);
    }

调用的时候把Url传进去即可。

var url = "http://localhost:81/webservice1.asmx";
var reference = new WebService1SoapClient(url, WebService1SoapClient.EndpointConfiguration.WebService1Soap12);
var helloWorldResult = await reference.HelloWorldAsync();
Console.WriteLine(helloWorldResult.Body.HelloWorldResult);
var str = "张三";
var helloResult = await reference.HelloAsync(str);
Console.WriteLine(helloResult.Body.HelloResult);

have a wonderful day。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/94100.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

牛客java刷题知识点总结(六)

内存引用地址 内存引用地址&#xff0c;是指栈中存放的地址&#xff0c;来指向堆中的某个位置。 int 是基本类型&#xff0c;数据直接存放在栈中&#xff0c;不存在内存引用地址的说法 A对 指向常量池里的"hello"。 B对 题中没说声明的a是局部变量。 C错 int a 1;并…

DSPE-PEG-N3,磷脂-聚乙二醇-叠氮 点击化学PEG试剂,可用于药物传递、基因转染和生物分子修饰

中文名称 叠氮聚乙二醇磷脂、磷脂聚乙二醇叠氮 简称 N3-PEG-DSPE、DSPE-PEG-N3 物理性质&#xff1a;米白色/白色固体或粘性液体取决于分子量。 溶剂&#xff1a; 溶于大部分有机溶剂&#xff0c;和水有很好的溶解性。 活性基团&#xff1a; N3 反应基…

深度学习(17)—— 度量学习

深度学习&#xff08;17&#xff09;—— 度量学习 文章目录深度学习&#xff08;17&#xff09;—— 度量学习一、What?二、paired-based loss1. Contrastive loss2. Triplet loss3. Triplet center loss4.N-pair loss5. Quadruplet loss6. Lifted Structure Loss昨天讨论的时…

Linux安装tomcat 保姆级教程

一、安装前提 安装tomcat&#xff0c;前提需要安装jdk&#xff0c;如果没有安装 linux安装jdk教程(手动安装/yum安装) 保姆级教程_ 来杯咖啡的博客-CSDN博客 二、安装教程 1、下载tomcat tar包 官网下载地址: Apache Tomcat - Welcome! 2、将下载的压缩包上…

实验4 路由配置

实验4 路由配置一、实验目的二、实验要求三、实验步骤&#xff0c;数据记录及处理四&#xff0e;实验总结一、实验目的 1、路由配置&#xff1b; 2、配置静态路由&#xff1b; 3、掌握RIP协议配置。 二、实验要求 写出PC0与PC1连通的基本要求和配置过程 三、实验步骤&#…

UDP服务器

目录 一&#xff0c;介绍 二&#xff0c;日志 三&#xff0c;服务端 1&#xff0c;服务器参数 2&#xff0c;创建套接字 3,绑定 3.1 填充套接字信息 3.2 绑定 4&#xff0c;启动服务器 4.1接收客户端请求 4.2记录用户信息 4.3 消息转发 4.4 main函数代码 4.5服务器整…

单商户商城系统功能拆解47—应用中心—自定义海报

单商户商城系统&#xff0c;也称为B2C自营电商模式单店商城系统。可以快速帮助个人、机构和企业搭建自己的私域交易线上商城。 单商户商城系统完美契合私域流量变现闭环交易使用。通常拥有丰富的营销玩法&#xff0c;例如拼团&#xff0c;秒杀&#xff0c;砍价&#xff0c;包邮…

JVM之class加载过程

一、定义&#xff1a; java虚拟机把描述类的数据从class文件加载到内存&#xff0c;并对数据进行 校验/准备/解析和初始化&#xff0c;最终形成可以被虚拟机直接使用的Java类型&#xff0c;这个过程被称作虚拟机的类加载机制。 称作虚拟机的类加载机制。 loading -> linki…

南卡和FIIL蓝牙耳机哪个比较好?数码达人深度对比评测

2023即将到来&#xff0c;蓝牙耳机对于大部分人来说&#xff0c;成为了越来越重要的存在。日常生活中随处可见的都是在使用蓝牙耳机的人&#xff0c;有听歌的、看剧的、玩游戏的等等。伴随着更多的人使用蓝牙耳机&#xff0c;市面上可见的蓝牙耳机数量正在飙升&#xff0c;这也…

MySQL 的自增主键一定是连续的吗?

全文摘要&#xff1a;结合实例分析了自增值保存在哪里&#xff0c;自增值的修改策略&#xff0c;以及自增值不连续的四个场景&#xff0c;希望对各位小伙伴们有所帮助~ 众所周知&#xff0c;自增主键可以让聚集索引尽量地保持递增顺序插入&#xff0c;避免了随机查询&#xff…

微软确认配置错误导致65,000多家公司的数据泄露

©网络研究院 微软证实&#xff0c;在安全漏洞导致端点无需任何身份验证即可通过互联网公开访问后&#xff0c;它无意中暴露了与数千名客户相关的信息。 微软在警报中表示&#xff1a; “这种错误配置可能导致未经身份验证访问与微软和潜在客户之间的交互相对应的一些业务…

互联网大厂Java岗考点(阿里+百度+腾讯+字节跳动+美团+京东)

本文扼要 本文结构主要分为以下三个部分&#xff1a; 01 互联网大厂考点&#xff08;阿里百度腾讯字节跳动美团京东&#xff09;02 Java 面试考点大全&#xff08;基本功底常用技术技术深度技术经验学习能力工作能力项目经验&#xff09;03 面试真题重现 01 互联网大厂考点 …

OPSS-PEG-N3叠氮聚乙二醇巯基吡啶, N3-PEG-OPSS,点击化学PEG试剂

名称 叠氮聚乙二醇巯基吡啶 N3-PEG-OPSS 中文名称 叠氮PEG巯基吡啶 巯基吡啶PEG叠氮 巯基吡啶聚乙二醇叠氮 英文名称 N3-PEG-OPSS OPSS-PEG-N3 Azide-PEG-OPSS OPSS-PEG-Azide 溶剂 溶于二氯甲烷&#xff0c;氯仿&#xff0c;乙酸乙酯&#xff0c;四氢呋喃等有机溶剂 存储条…

pycharm安装使用pyQt5

一、创建项目 二、安装pyqt5库 三、配置PyCharm外部工具 打开File->settings->Tools->External Tools 1、配置QtDesigner 程序&#xff1a;D:\python3.7\Lib\site-packages\qt5_applications\Qt\bin\designer.exe//安装包的时候回自动下载&#xff0c;直接在包文件…

【微服务技术09】统一网关Gateway

【微服务技术09】统一网关Gateway 案例代码&#xff1a;https://gitee.com/pikachu2333/spring-cloud-hexuan 网关作用 网关功能&#xff1a; 身份认证和权限校验服务路由、负载均衡请求限流 权限控制&#xff1a; 网关作为微服务入口&#xff0c;需要校验用户是是否有请求…

配置Typora

配置Typora 文章目录配置Typora阿里云1&#xff09;网页搜索阿里云OSS2&#xff09;注册账号3&#xff09;点击立刻开通a) 点击“产品价格”b) 初次付费c) 交钱以免造成后续无法访问d&#xff09;进入管理控制台e) 创建钥匙PicGo1&#xff09;下载安装2&#xff09;设置选择显示…

领域知识网络即服务:知识助力产业升级“无形的手”?

文|智能相对论 作者|叶远风 你用过ChatGPT了吗&#xff1f; 这个风靡全球的AI应用&#xff0c;以出圈的方式展现着AI的能量。 一个对话的界面&#xff0c;可以聊任何你想聊的话题&#xff0c;可以写出任何你想要的文字。 似乎有无限的人类知识&#xff0c;被集中到了一起&…

别再背锅了,这个小技巧统计第三方接口耗时很安逸

前言 之前我有写过一篇记录生产环境事故的文章&#xff0c;获得了不少好评。 后续&#xff0c;我们团队有做过一些讨论&#xff0c;为了支撑运营维护&#xff0c;搭建了更好的日志平台GranfaLoki&#xff0c;也引入了SkyWalking做链路追踪。 但过程中也遇到了一些问题&#xff…

26个工业废水处理工艺流程图!水处理从业人员必看

1 矿泉水除溴酸盐工艺流程 季胺1型官能团耐受硫酸盐、氯离子等去除溴化物 2 电厂制备超纯水工艺流程 内冷水系统降电导装置&#xff0c;脱除阴阳离子 电导率&#xff1c;1μs/cm 3 锰矿除氨氮工艺流程 两串一备&#xff0c;通过磺酸基官能团捕捉铵根离子 4 垃圾渗滤液除氨…

5-7:Spring整合Elasticsearch

引入依赖 spring-boot-starter-data-elasticsearch 配置Elasticsearchcluster-name、cluster-nodes. Spring Data Elasticsearch ElasticsearchTemplateElasticsearchRepository 实现对帖子的搜索&#xff0c;将帖子的数据存到ES中 EslaticSearch使用 下载依赖 <!-- htt…