.Net 平台WebService的创建、部署和使用介绍
.NET平台内建了对Web Service的支持,包括Web Service的构建和使用。与其它开发平台不同,使用.NET平台,你不需要其他的工具或者SDK就可以完成Web Service的开发了。.NET Framework本身就全面支持Web Service,包括服务器端的请求处理器和对客户端发送和接受SOAP消息的支持。下来我们就使用 一个非常简单的示例来介绍Web Service的创建、部署和使用。
一、用Visual Studio创建一个最简单的Web Service
首先,打开VS,打开“File->New->Web Site”,选择“ASP.NET Web Service”。
查看Service.cs代码,你会发现已经为Web Service文件建立了缺省的框架。原始代码为:
Default Web Service <!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->using System;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq; [WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// 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 Service : System.Web.Services.WebService
{
public Service () {
//Uncomment the following line if using designed components
//InitializeComponent();
} [WebMethod]
public string HelloWorld() {
return "Hello World";
}
}
这个Web服务使用http://tempuri.org/作为默认命名空间。工程里面已经有一个Hello World的方法了,直接运行看看效果,点击显示页面上图中的“HelloWorld”超链接,跳转到下一页面。再点击“调用”按钮,就可以看到用XML格式返回的Web Service结果为: <string>Hello World</string>。这样我们就可以添加所有我们想要提供的方法。
要注意的是:
1. http://tempuri.org/是默认命名空间,建议发布前更换自己的命名空间。
2. [WebMethod]是Web Service为我们提供的特性,它表示下面的方法是 Web 方法,允许Web使用SOAP调用该方法。一个Web Service文件中可以有多个[WebMethod],一个[WebMethod]只能对它下面的方法有效。
二、部署WebService
Webservice只有部署好并发布后才能供外部使用,不如发布到tcp 服务器。
Webservice部署将会有下面的目录结构:
1. \Inetpub
2. \wwwroot
3. \WebServiceName
4. WebServiceName.asmx
5. \Bin
WebService发布的条目有:
|
条目 |
描述 |
|
Web应用程序目录 |
作为你的XML Web服务的根目录。所有的文件都存放在这个目录中。这个目录应该被标记为一个IIS Web应用程序所用。 |
|
<WebServiceName>.asmx 文件 |
调用XML Web服务的客户端的基本URL。这个文件可以为任何有效的文件名。 |
|
<WebServiceName>.disco文件 |
(可选的)作为XML Web服务的发现机制。.disco文件不会自动地为XML Web服务创建。这个文件可以为任何有效的文件名。 |
|
Web.config文件 |
(可选择的)如果你需要覆盖默认配置设置,你可以包含一个web.config文件。Web服务使用这个配置文件来允许系统的定制和可扩展性。例如,如果在系统中你的Web服务需要验证而其他的Web应用程序不需要的话,你可以提供一个该Web服务特定的web.config文件。 |
|
\Bin目录 |
包含用于这个XML Web服务的二进制文件。如果你的XML Web服务类和.asmx文件不在同一个目录下,那么包含类的部件必须在\Bin目录中。 |
三、使用WebService
1. 添加Web引用---实例化Web Service类---执行WebService方法
WebService 可能在本项目、非本项目、甚至在异地被调用。
* 添加Web Service引用
* 可以改一下Web Service的引用名,然后实例化应用再调用方法: (WebService ws = new WebService(); string s = ws.HelloWorld();)
* 添加完引用后,同时会看到App_WebReferences文件夹下已经添加了Web Service的相关文件
*.disco,*.discomap,*.wsdl
2. WebService在前台页面的JS 调用方法
2.1 首先通过下面的方法把Webservice在前台引用进来
<asp:ScriptManager runat="server">
<Services>
<asp:ServiceReference Path="WebService.asmx" InlineScript="True" />
</Services>
</asp:ScriptManager>
2.2 然后就可以通过JS程序进行调用,示例如下:
<script. type="text/jscript">
function a()
{
WebService.HelloWorld(onresult);
}
a();
......
</script>
四、调试WebService
在VS里,如果WebService是与ASP.NET放在同一个项目的,直接设置断点就可以进行单步调试了。但如果该WebService是个独立的项目的话,客户端调用后 就算设置断点也是无法进行调试的。
如果只是单独的对WebService调试的话。可以这么做,对该WebService项目点击右键,调试,启动新实例,就可以设置断点进行单步调试了。
但如果是想测试下客户端传送到WebService的数据进行调试的话,可以这么做:启动客户端,如WINFORM或WEB页,然后对该Web Service下的调试附加到进程,在WebService里设置好断点就可以进行调试了。
也可以在Web.Config里启动trace 实时检测数据变化。
.Net 平台WebService的创建、部署和使用介绍的更多相关文章
- WebService 的创建,部署和使用
WebService,即Web服务,能使得运行在不同机器上的不同应用无须借助,专门的第三方软件或硬件,就可相互交换数据或集成. 第一次选择WebService,是为了替代数据库远程连接.我们都知道当S ...
- 【转】WebService 的创建,部署和使用
WebService,即Web服务,能使得运行在不同机器上的不同应用无须借助,专门的第三方软件或硬件,就可相互交换数据或集成. 第一次选择WebService,是为了替代数据库远程连接.我们都知道当S ...
- ASP.NET中WebService的创建和部署以及通过反射动态调用WebService
一.在ASP.NET中创建WebService 首先我们先创建一个ASP.NET Web 应用程序,此处我们以VS2017为例 点击新创建的项目,右键添加新建项,选择Web服务,输入名称后点击添加 这 ...
- C#中WebService的创建、部署和调用的简单实例
webservice 可以用于分布式应用程序之间的交互,和不同程序之间的交互. 概念性的东西就不说太多,下面开始创建一个简单的webservice的例子. 一:WebService的创建开发 先新建一 ...
- java版微信公众平台自定义菜单创建代码实现
微信公众平台自定义菜单创建代码实现—java版 搞了两天的自定义菜单,终于搞定了,现在分享下心得,以便后来者少走弯路...... 好了,先看先微信官方的API 官方写的很详细,但是我看完后很茫然,不知 ...
- 淘宝TAE平台定时任务包的部署步骤
淘宝TAE平台定时任务包的部署: 第一步:首先把自己的任务打包成一个jar包.使用maven打包的命令为:mvn clean install 第二步:把任务jar包依赖的jar包全部导出来.使用mav ...
- 代码质量管理平台之SonarQube安装部署
一.简介 Sonar是一个用于代码质量管理的开放平台,通过插件机制,sonar可以收集不同的测试工具,代码分析工具,以及持续集成工具.与持续集成工具(比如jenkins)不同,sonar并不是简单地把 ...
- 基于kubernetes平台微服务的部署
基于kubernetes平台微服务的部署 首先下载插件: kubernetes Continuous Deploy 然后去找 .kube/ 里的config 复制里面的内容 去添加凭据: 然后就是脚本 ...
- 【WebService】WebService的创建和使用——文件名称生成器
简介 之前做过一个文件名称生成器,通过Webservice读取XML文件并将其通过Json传到客户端中的combobx,用户通过combobox选择要生成文件的名称模板,点击生成则会产生一个文件名称并 ...
随机推荐
- Android获取当前应用版本号
代码改变世界 获取当前应用的版本号 private String getVersionName() throws Exception { // 获取packagemanager的实例 PackageM ...
- 如何使用Python的logging模块
几个学习连接: Python官方链接: https://docs.python.org/3.4/library/logging.html?highlight=logging 翻译(不过是2.3版本的) ...
- 将模型储存到本地-FastCoder
// // ViewController.m // 模型转data储存 // // Created by 谭启宏 on 16/3/4. // Copyright © 2016年 tqh. All ri ...
- 【bzoj4004】[JLOI2015]装备购买 贪心+高斯消元求线性基
题目描述 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am) 表示 (1 <= i <= n; 1 <= j < ...
- 【Luogu】P4035球形空间产生器(高斯消元)
题目链接 水比题,把圆方程展开减一下把平方都减掉半径的平方也减掉,高斯消元即可. 然后我只输出两位小数,爆了两次零.我好菜啊. #include<cstdio> #include<c ...
- 【Luogu】P1430序列取数(DP)
题目链接 博弈DP太喵了qwq 设f[i][j]表示剩下区间[i,j]要取,先手最大值 明显我们要从这区间里面拿个最大的 就等价于这段区间的前缀和,我们要给对手留下个最小的 就是f[i][j]=sum ...
- java面试题之如何中断一个线程?
方法一:调用interrupt方法,通知线程应该中断了: A.如果线程处于被阻塞状态,那么线程将立即退出被阻塞状态,并抛出了一个InterruptedException异常. B.如果线程处于正常活动 ...
- Java连接SQLite数据库
下载java包:sqlite-jdbc-3.7.2.jar,放到java工程目录lib下 如下代码实例: import java.sql.*; import org.sqlite.JDBC; /** ...
- Why do I keep getting mixed tabs and spaces in a Visual Studio C# code window?[vs power tools issue transfered]
goto tools->option->power tools-> turn "use mixed tabs" option to off. you won`t ...
- IDEA连接linux服务器
idea连接linux(完成了xshell和xftp连接linux的功能,可以直接卸载这俩了..) File->settings->Deployment左侧加号添加 选择传输类型ftp或者 ...