vs12新建ajax,VS2012下WebService 的创建,部署和使用

WebService,即Web服务,能使得运行在不同机器上的不同应用无须借助,专门的第三方软件或硬件,就可相互交换数据或集成.

第一次选择WebService,是为了替代数据库远程连接.我们都知道当SQL允许远程时,则要打开某一端口.但这一点在我们已经部署好的服务器上,却是不被允许的,于是就选择WebService来代替了.当然现在我们也可以选择WCF来完成.不过这不是我们今天的主题.

WebService返回的数据为XML,这是我们都很熟悉的一种数据方式,大大方便了我们的工作当然,WebService给我们带来的好处远不止这些.我不想讲得更多.相信当你能够熟练运用WebService后,你会发现这是一把锋利的宝刃.

对于初次接触WebServcie的人来说,长篇理论,不如一个实例来得更实际些,我们更看重的是到底如何能够创建一个WebService并且将其部署,和使用.

下面我将逐步的完成一个加减乘除功能的WebServic.

开发环境:VS2012

IIS环境:WINSERVER2008R2

IIS7.5

第一步:打开VS2012,新建空项目,注意选择.NET Framework的版本.这里我选择的是.NET Framework 4

a4c26d1e5885305701be709a3d33442f.png

新建好项目后,在项目中添加一个WebService项

a4c26d1e5885305701be709a3d33442f.png

打开这个文件,我们可以看到,代码如下

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Web;

usingSystem.Web.Services;

namespaceCalculateService

{

///

/// WebService1 的摘要说明

///

[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

[System.ComponentModel.ToolboxItem(false)]

// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。

// [System.Web.Script.Services.ScriptService]

publicclassCalCulService : System.Web.Services.WebService

{

[WebMethod]

publicstringHelloWorld()

{

return"Hello World";

}

}

}

将HellowWorld这段代码删除,修改后如下

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Web;

usingSystem.Web.Services;

namespaceCalculateService

{

///

/// CalCulService 的摘要说明

///

[WebService(Namespace = "http://login.wxjy.info")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

[System.ComponentModel.ToolboxItem(false)]

// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。

// [System.Web.Script.Services.ScriptService]

publicclassCalCulService : System.Web.Services.WebService

{

[WebMethod]

publicintSum(inta,intb)

{

returna + b;

}

[WebMethod]

publicintSub(inta,intb)

{

returna - b;

}

[WebMethod]

publicdoubleMult(doublea,doubleb)

{

returna * b;

}

[WebMethod]

publicdoubleDiv(doublea,doubleb)

{

returna / b;

}

}

}

此时,我们已经完成这个WebService的代码部分.接下来我们要将这个WebService打包发布

在项目上点击右键,点击菜单中的发布

a4c26d1e5885305701be709a3d33442f.png

此时出现如下页面

a4c26d1e5885305701be709a3d33442f.png

点击下拉菜单选择新建配置文件

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

完成以上步骤后,我们可以在设置文件生成的文件夹内看到生成的以下文件

a4c26d1e5885305701be709a3d33442f.png

现在我们要将生成的文件拷贝到已经部署好的IIS服务器上:在服务器上新建文件夹,将文件拷贝至文件夹内,并且为文件夹设置匿名权限.

a4c26d1e5885305701be709a3d33442f.png

现在我们在IIS中添加网站

a4c26d1e5885305701be709a3d33442f.png

需要注意的是:我们的这个WebService是基于.NET 4开发的.如果你的IIS默认使用的是.NET

2.0,那么发布后将会出现异常,而无法访问.

查看一下应用程序池的右边的应用程序池默认设置

a4c26d1e5885305701be709a3d33442f.png

提供两种解决方案:第一种,在上面的表格中,将应用程序池默认改为4.0即可.当然这是指你的IIS中没有需要2.0的应用程序和网站.

如果你的IIS中还有其它的需要.NET

2.0的应用程序,这时候你可以选择第二个办法

首先添加一个应用程序池

a4c26d1e5885305701be709a3d33442f.png

然后添加网站,将网站的应用程序池改为新建的应用程序池

a4c26d1e5885305701be709a3d33442f.png

当然,我们也可以将这个项目的.NET版本改为3.5,然后重新打包发布.那么就不需要添加对4.0的支持了.

添加完毕,启动网站,此时可以关闭与服务器的连接了.

在本地的浏览器中输入地址

此时我们可以看到以下的界面

a4c26d1e5885305701be709a3d33442f.png

此时我们已经完成了这个WebService的创建和部署.接下来,我们要在本地使用它

打开VS2012,新建项目,项目名为TestCalCul

a4c26d1e5885305701be709a3d33442f.png

在项目中添加新建项

a4c26d1e5885305701be709a3d33442f.png

在项目中引用项上点击右键,选择添加服务引用,显示界面如下:

a4c26d1e5885305701be709a3d33442f.png

点击左下角的高级,出现界面如下

a4c26d1e5885305701be709a3d33442f.png

点击添加Web引用,出现界面如下

a4c26d1e5885305701be709a3d33442f.png

在URL中输入我们发布的WebService的URL地址,系统会自动搜索到服务.并且为Web引用设置一个引用名.此引用名将是我们在项目中引用这个服务的命名空间

a4c26d1e5885305701be709a3d33442f.png

点击添加引用,引用完成.

接下来,我们在WebForm1的cs文件中写如下代码

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Web;

usingSystem.Web.UI;

usingSystem.Web.UI.WebControls;

//不要忘记为WebService添加using引用

usingTestCalCul.MyWebService;

namespaceTestCalCul

{

publicpartialclassWebForm1 : System.Web.UI.Page

{

protectedvoidPage_Load(objectsender, EventArgs e)

{

CalCulService cal = newCalCulService();

doublea = 29755;

doubleb = 112.58;

Response.Write(cal.Mult(a, b).ToString());

}

}

}

接下来,在浏览器中运行该项目.可以看到如下结果

a4c26d1e5885305701be709a3d33442f.png

此时我们已经完成了这个WebService的使用过程

其实,这个实例在开发中,没有任何意义.

但是通过这个实例,我们可以看出WebService的复用性,简单性是非常好的.

在VS的环境下,我们可以轻易完成一个WebService的开发过程.

而WebService返回给我们的XML数据方式,也可以充分的和JavaScript等任何一种可以处理XML的语言相结合来

完成我们的需求.

在这里要注意,当WebService连接数据库时,我们要适当的给WebService进行加密.

加密的方式很多,你可以通过在IIS服务器上禁止匿名访问来实现,也可以给WebService的验证增加验证内容,最

简单的就是加上用户名和密码.

还要注意,不要用有含义的方法名称,比如Login或者PayOrder等,回传数据不要使用bool值,尽量使用字符串来替

代,最好在字符串中加上干扰码等.

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

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

相关文章

pythonsql注入_python使用mysql,sql注入问题

python使用mysql importpymysql connpymysql.connect( host 127.0.0.1, #连接地址 port 3306, #端口 user root, #用户名 password , #密码 database db, #库名称 charset utf8 #编码格式 utf8,不是utf-8 ) cursor conn.cursor(pymsql.cursors.DictCursor) #产生一个游标,…

js 控制鼠标_JS逆向 | 面向小白之eval混淆

所有文章首发在我的微信公众号“逆向新手”,更多逆向系列请关注公众号,谢谢!声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢&#xff0…

mac mysql密码错误_解决mac 下mysql安装后root用户登录密码错误问题

使用的mac OS 10.11 安装mysql后访问root/root用户失败,网上找了一些解决办法,下面记录下解决方法方便以后自己查询概述(看懂下面就不用看了):停服务:sudo /usr/local/mysql/support-files/mysql.server stop安全模式…

mongodb 输出数组字段_MongoDb文档操作、索引操作

学习主题:MongoDb学习目标:掌握mongodb文档的更新掌握mongodb文档的删除掌握mongodb文档的查找掌握mongodb文档的条件操作符掌握mongodb中的索引操作Mongodb的更新方式Update()函数更新Save()函数更新Mongodb的update更新?Update用于更新已存…

表情符号mysql utf8mb4_mysql utf8mb4与emoji表情

一 什么是Emojiemoji就是表情符号;词义来自日语(えもじ,e-moji,moji在日语中的含义是字符)表情符号现已普遍应用于手机短信和网络聊天软件。emoji表情符号,在外国的手机短信里面已经是很流行使用的一种表情。手机上如何使用emoji&…

html自适应_web前端入门到实战:HTML 文档流,设置元素浮动,导致父元素高度无法自适应的解决方法...

元素浮动定义float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。如果浮动非替换元素,则要指定…

idea 远程调试_我的天!你竟然不会用IDEA远程调试Tomcat...

# 准备工作明确的远程服务器的IP地址,某些我是:192.168.92.128关掉服务器防火墙:service iptables stop# 本地远程服务器配置添加远程服务器,如下图复制远程服务器自动生成的JVM参数,等下有用,如下图&#…

跨域获取后台数据undefined_同源策略amp;JSONP跨域

同源策略&JSONP跨域同源策略 对于同源的定义,MDN给出了这样的解释:如果两个页面的协议,端口(如果有指定)和主机都相同,则两个页面具有相同的源。如何确定两个页面是否同源,只要比较两个页面…

python 除数不能为零的报错有哪些_【社区精选40】Python错误处理及代码调试方法(文末赠书中奖名单)...

本文整理自爱数据学院中的问答更多精彩问答,进入下方社区网站查看http://www.lovedata.cn/invitation社区精选话题 第40期Python错误处理及代码调试方法一次写完代码程序并能够正常运行的概率很小很小,总会有各种各样的错误bug需要处理。有的报错简单&a…

mac mysql prefpane_【MySQL数据库开发之一】Mac下配置安装数据库-MySQL

本站文章均为那么从今天开始陆续会更新数据库和Hibernate框架的博文,也是Himi学习的历程记录,希望大家能共同讨论和研究;OK,本篇简单介绍安装吧,首先到MySQL官方网站:如上图:点击DOWNLOAD &…

系统新模块增加需要哪些步骤_想要吸引人流,儿童乐园需要增加哪些新设备呢...

儿童乐园是现今最火爆的一个投资项目,因为它的主要消费群体是孩子,而现在的家长们对孩子们的宠爱,基本都会答应让孩子们去儿童乐园里面玩耍。但是儿童乐园的投资经营者也会遇见一些小问题,例如儿童乐园添加设备要怎么选择呢&#…

照片打印预览正常打印空白_小米发布口袋照片打印机,可无墨打印3寸背胶照片...

9月11日消息,小米推出一款小米口袋照片打印机。与之前的小米米家照片打印机相比,这款新品更加小巧便携,体积接近充电宝大小,净重仅181g,便于随身携带。小米口袋照片打印机采用ZINK无墨技术打印,即使用嵌入纸…

MySQL优化调优有没有做过_MySQL 调优/优化的 100 个建议

MySQL是一个强大的开源数据库。随着MySQL上的应用越来越多,MySQL逐渐遇到了瓶颈。这里提供 101 条优化 MySQL 的建议。有些技巧适合特定的安装环境,但是思路是相通的。我已经将它们分成了几类以帮助你理解。MySQL监控MySQL服务器硬件和OS(操作系统)调优&…

mysql核心参数_MySQL技术体系之核心参数

本文主要基于MySQL 5.7版本的数据库环境,总结my.cnf文件中核心参数的配置使用,让更多的人对MySQL技术体系有更全面、更专业的深度了解。一、客户端核心参数1、port端口号,默认33062、socketSocket文件地址,默认以.sock为文件名称后…

jtag引脚定义_从逆向分析的角度学习硬件调试技巧JTAG,SSD和固件提取

我想从逆向的角度做了深入了解JTAG,JTAG是许多嵌入式CPU使用的硬件级别调试机制,我希望通过这篇文章从逆向工程师的角度解释如何使用JTAG,并在此过程中提供一些实际示例。0x01 研究目标通过这篇文章,我希望做到以下几点&#xff1…

python virtualenv conda_在vscode中启动conda虚拟环境的思路详解

问题:cudatoolkit cudnn 通过conda 虚拟环境安装,先前已经使用virtualenv安装tf,需要在conda虚拟环境中启动外部python虚拟环境思路:conda prompt即将 [虚拟环境位置] 以参数形式传入 [activate.bat]VSOCDE中的设置添加以下语句{&…

远程过程调用失败_Java开发大型互联网RPC远程调用服务实现之问题处理方案

引言RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络…

chrome 新的session 设置_为什么还是由这么多人搞不懂Cookie、Session、Token?

作者:不学无数的程序员链接:https://urlify.cn/Yfm6Vr# Cookie洛:大爷,楼上322住的是马冬梅家吧? 大爷:马都什么? 夏洛:马冬梅。 7大爷:什么都没啊? 夏洛…

eview面板数据之混合回归模型_【视频教程】Eviews系列25|面板数据回归分析之Hausman检验及本章常见问题解答...

点击上方关注我们!本期我们学习Eviews统计建模最后一部分--面板数据回归分析Hausman检验及本章常见问题解答。实操:Hausman检验判断是固定效应模型还是随机效应模型上期我们讲到模型判断若选择模型2,需进一步通过Hausman检验判断固定效应还是随机效应,接…

mybatis mysql selectkey_Mybatis示例之SelectKey的应用

SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式。不管SelectKey有多好,尽量不要遇到这种情况吧,毕竟很麻烦。SelectKey需要注意order属性,像Mysql一类支持自动增长类型的…