经常会用JavaScript访问asp.net的Webservice的需求,通常的方法是用asp.net ajax来解决,但asp.net ajax框架在不国内并不经常被使用。
在我们的应用中一般会是这样的,使用了jquery作为客户端框架,ajax请求也通常返回html或者json。html这里就不讨论了。返回json一般都是搞一个handler.ashx来处理请求,拼凑字符串来返回json。从而放弃了ws,因为ws返回的是xml,使用起来不方便。
所以我觉着比较完美的解决方法是让ws返回json而且不用asp.net ajax的客户端框是比较理想的解决方法。
通过观测发现asp.net ajax的客户端框架请求webservice的时候返回的是json,为什么webservice没有返回xml而返回了json呢?抓包分析到,关键在request的headers中 “Content-Type: application/json;utf-8” ,因此webservice就使用了json的序列化,应该是 “System.Web.Script.Serialization.JavaScriptSerializer”这个类完成的工作,通过 web.config的配置,把*.asmx交给了System.Web.Extensions.Dll。也就是这里还是用了asp.net ajax,不过是用的服务端部分,我这里直接用的asp.net 3.5
以上都是在啰嗦,具体的方法很简单,看例子

 

 

 test2
{
     /// <summary>
     
/// Summary description for WS1
     
/// </summary>
     [WebService(Namespace = "http://onewww.org/")]
     [WebServiceBinding(ConformsTo 
= WsiProfiles.BasicProfile1_1)]
     [ToolboxItem(
false)]

     [System.Web.Script.Services.ScriptService]
     
public class WS1 : System.Web.Services.WebService
     {

         [WebMethod]
         
public string HelloWorld()
         {
             
return "Hello World";
         }

         [WebMethod]
         
public TestUser CreateUser(string name,int age)
         {
             
return new TestUser { Name = name, Age = age };
         }
     }

     
public class TestUser
     {
         
public string Name { getset; }
         
public int Age { getset; }
     }
}

 

>

 

 

 

相关文章: