webservice之简单创建和发布(一个加法运算)
开发工具 visual studio 2010
WebService:严格来说是行业标准,不是技术,使用XML扩展标记语言来表示数据(这个是夸语言和平台的关键)。微软的Web服务实现称为ASP.NET Web Service.它使用Soap简单对象访问协议来实现分布式环境里应用程序之间的数据交互。
WSDL来实现服务接口相关的描述。此外Web services 可以注册到UDDI中心.供其客户查找使用。后来微软做了ASP.NET Web Service的安全,性能,数据加密、解密,托管宿主等多方面的扩展,称为WSE系列,这个是过度产品,最高到WSE3.0.后来就是WCF时代。
这些都是其他扩展的内容了,本文主要讲述如何创建并发布一个webservice。
打开visual studio 新建一个空的asp.net文本应用程序
visual studio 2010 不能直接创建一个webservice应用程序 必须在一个asp.net应用程序中创建相应的服务,直接创建只能创建一个wcf应用程序。
在项目中添加一个web服务
编辑代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
namespace Testwebservice
{
/// <summary>
/// mywebservice 的摘要说明
/// </summary>
[WebService(Namespace = "172.16.2.11")] //为自己以后webservice发布虚拟目录所在的域名 本例子使用本机Ip地址
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]//启动对脚本的支持
public class mywebservice : System.Web.Services.WebService
{
//系统自动生成的代码
//[WebMethod]
//public string HelloWorld()
//{
// return "Hello World";
//}
//定义一个简单的求和方法
[WebMethod(Description = "求和的方法")]
public string Addition(double i, double j)
{
return "这2个数的和为=== "+(i + j).ToString();
}
}
}
发布这个加法运算的webservice
配置web
发布
打开iis
计算机——管理——服务和应用程序——Internet信息服务管理器
添加一个网站
设置默认目录
添加默认文档
全名(打错了 呜呜··)
现在我们点击管理网站——浏览网站
程序报错.net framework服务版本无法识别,也就是说我们写的版本与我们发布时服务器的版本不一致
更改即可
现在浏览网站 就可以看见我们自己发布的加法服务了
接下来我们如何使用这个求和的服务呢?
新建一个空白的asp。netweb应用程序
然后添加服务引用
新建一个web窗口 编辑代码
页面代码
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="useadd.aspx.cs" Inherits="usemytest.useadd" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server" method="get">
<div>
<input type="text" name="n1"/>
<input type="text" name="n2"/>
<input type="submit" value="求和"/>
</div>
</form>
</body>
</html>
cs文件C#代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace usemytest
{
public partial class useadd : System.Web.UI.Page
{
ServiceReference1.mywebserviceSoapClient addsoap = new ServiceReference1.mywebserviceSoapClient();
//实例化一个SoapClient服务对象
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
int n1 = Convert.ToInt32(Request.QueryString["n1"]);//获取加数的值
int n2 = Convert.ToInt32(Request.QueryString["n2"]);
string result=addsoap.Addition(n1, n2);//调用webservice中发布的方法
Response.Write(result);//输出结果
}
}
}
}
运行结果
在部署的时候如果报错:CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web
解决方法是对发布文件所在文件夹和系统文件夹“c:windows\temp” 目录访问权限 temp--> 属性-->安全-- > 添加everyone -->并赋予其权限为 读 和 写--> 确定