王吉元-NWPU

导航

 

很多人在论坛里说,在Visual Studio 2010中不能创建“ASP.Net Web Service”这种project了,下面跟帖者云云,有的说这是因为微软已经将Web Service整合进WCF,也有的提出一种先将.Net Framework Target设置为3.5的一种很“Tricky”的作法,其实这些说法是不准确的。微软确实用WCF整合了Web Service,但并不等于说微软不准备让大家在Visual Studio里面创建传统的Web Service了。其实正确的做法很简单,大家一看就恍然大悟了。

 

第一步:创建一个“ASP.Net Empty Web Application”项目

 

第二步:在项目中添加“Web Service”新项目

第一步之后,Visual Studio 2010会创建一个仅含一个站点配制文件(Web.config)的空站点,其余的什么也没有。

我们在Visual Studio 2010的Solution Explorer中,选中当前的这个project,添加新项目(右键菜单:Add --> New Item),选择“Web Service”这种类型:

 

看到这里读者应该就恍然大悟了吧。

 

好,我们继续:

 

第三步:编码、运行

 

添加完Web Service这种new item之后,Visual Studio已经替我们写了个示范的Web方法了:

 

[csharp] view plaincopyprint?
 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.Services;  
  6.   
  7. namespace sitedemo.Services  
  8. {  
  9.     /// <summary>  
  10.     /// Summary description for CalculateService  
  11.     /// </summary>  
  12.     [WebService(Namespace = "http://tempuri.org/")]  
  13.     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
  14.     [System.ComponentModel.ToolboxItem(false)]  
  15.     // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.   
  16.     // [System.Web.Script.Services.ScriptService]  
  17.     public class CalculateService : System.Web.Services.WebService  
  18.     {  
  19.   
  20.         [WebMethod]  
  21.         public string HelloWorld()  
  22.         {  
  23.             return "Hello World";  
  24.         }  
  25.     }  
  26. }  


直接Press F5就可以看到结果:

 

 

 

 

然后我们改写这段代码,添加我们自己的方法进去:

 

[csharp] view plaincopyprint?
 
  1. using System.Web.Services;  
  2.   
  3. namespace sitedemo.Services  
  4. {  
  5.     /// <summary>  
  6.     /// Summary description for CalculateService  
  7.     /// </summary>  
  8.     [WebService(Namespace = "http://tempuri.org/")]  
  9.     public class CalculateService : WebService  
  10.     {  
  11.         [WebMethod]  
  12.         public string HelloWorld()  
  13.         {  
  14.             return "Hello World";  
  15.         }  
  16.   
  17.         [WebMethod]  
  18.         public int Add(int x, int y)  
  19.         {  
  20.             return x + y;  
  21.         }  
  22.     }  
  23. }  


运行:

 

 

 

 

怎么样,是不是很简单?微笑

 

 

总结

现在我们再回过头来看看,从VS2010之前版本的旧的创建Web Service的方式,到现在新的变化,Visual Studio改动了什么?

手头的机器没有装旧版的Visual Studio,我就现从网上抓一张教程里的截图吧,让我们看看旧版的Visual Studio里面大家创建Web Service时创建新项目的截图:

 

很多人说在Visual Studio 2010里面无法创建Web Service,他们大概是在寻找上面截图中的这种“ASP.Net Web Service”项目吧。

现在再回过头来看看,其实微软在Visual Studio 2010里面作了一个相当合理(make sense)的改变。

Web Service并不能单独存在,它必须Host在一个Web Site/Web Application上面。所以,在一个Web Site/Web Application里面,通过Add new item添加一个Web Service,这才是最合理的作法。

posted on 2013-11-19 11:06  王吉元  阅读(175)  评论(0编辑  收藏  举报