vs2010上面找不到直接创建webservice模板方式了。可以通过一下方式创建。
1.如果直接选择 .NET 4.0,可以选择 ASP.NET Empty Web Site/Application 模板,建立空的 Web 网站或项目,在添加新项窗口中,你依然会发现 Web Service 这个项模板。
2.可以先选择 .NET 2.0/3.0/3.5,就可以选择 ASP.NET Web Services 模板建立了,之后如果需要 .NET 4.0 的新特性,可以在项目属性窗口或网站属性页窗口的 Build 选项卡中选择 .NET 4.0。
PS:这个是我百度别人。
首先创建空白解决方案。
然后在解决方案右击-添加-新建项目-选择web应用程序就行
在应用程序上右击-添加-web服务
添加完成以后可以看到
里面已经建立了框架
可以直接运行查看
点击超链接到下一页
点击调用到就可以看到用XML格式返回的Web Service结果下图。说明环境搭建成功测试没有问题。
接下来创建一个简单带有功能的Web Service
注销原来的代码,写自己接口方法
[WebMethod(Description = "加法")]
public double add(double i, double j)
{
return i + j;
}
[WebMethod(Description = "减法")]
public double sub(double i, double j)
{
return i - j;
}
[WebMethod(Description = "乘法")]
public double mul(double i, double j)
{
return i * j;
}
[WebMethod(Description = "除法")]
public double div(double i, double j)
{
if (j != 0)
return i / j;
else
return 0;
}
运行后可以看到我们自己的方法。
现在我们来调用它
在新建的项目右击添加服务引用,在url 框中输入刚才访问接口的url地址
(注意不是添加服务引用,方法是:在资源管理器中点击右键,选择【添加服务引用】,点击 【高级】,【添加WEB引用】,调出对话框)
点击添加引用
如下图,解决方案中会出现引进来的WebService文件
先在网页上添加几个控件用来测试
<form id="form1" runat="server">
<div>
<asp:TextBox ID="Num1" runat="server"></asp:TextBox>
<select id="selectOper" runat = "server">
<option>+</option>
<option>-</option>
<option>*</option>
<option>/</option>
</select>
<asp:TextBox ID="Num2" runat="server"></asp:TextBox>
<span id = E runat = "server"></span>
<asp:TextBox ID="Result" runat="server"></asp:TextBox>
</div>
</form>
后台代码
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//在页面加载的时候动态创建一个按钮,在它的事件里调用Webservice
Button btn = new Button();
btn.Width = 20;
btn.Text = " = ";
btn.Click += new EventHandler(btn_Click);
E.Controls.Add(btn);
}
/// <summary>
/// 定义动态创建Button的Click事件,在这个事件中调用Webservice
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void btn_Click(object sender, EventArgs e)
{
if (Num1.Text != "" && Num2.Text != "")
{
//实例化引用的webservice对象
localhost.WebService WebserviceInstance = new localhost.WebService();
int Oper = selectOper.SelectedIndex;
switch (Oper)
{
//通过实例化的webservice对象来调用Webservice暴露的方法
case 0:
Result.Text = WebserviceInstance.add(double.Parse(Num1.Text), double.Parse(Num2.Text)).ToString();
break;
case 1:
Result.Text = WebserviceInstance.sub(double.Parse(Num1.Text), double.Parse(Num2.Text)).ToString();
break;
case 2:
Result.Text = WebserviceInstance.mul(double.Parse(Num1.Text), double.Parse(Num2.Text)).ToString();
break;
case 3:
Result.Text = WebserviceInstance.div(double.Parse(Num1.Text), double.Parse(Num2.Text)).ToString();
break;
}
}
}
}
}
然后开始测试了
测试成功