ASP.NET Ajax调用WCF服务正确实现方法浅谈
创始人
2024-06-23 19:21:43
0

我们今天主要为大家介绍的就是有关ASP.NET Ajax调用WCF服务的具体实现方法,主要的应用开发环境是:.NET Framework 3.5 Beta 2+Visual Studio 2005。那么接下来就让我们一起来看一下相关的操作步骤吧。 #t#

准备:

1、安装.NET Framework 3.5 Beta 2。

ASP.NET Ajax调用WCF服务需要.NET Framework 3.5 Beta 2中的System.Web.Extensions.dll(3.5.0.0),System.ServiceModel.Web.dll支持。

开始我安装的是.NET Framework 3.5 June 2007 Community Technology Preview (CTP),走了一些弯路。

2、安装Visual Studio 2005 extensions for .NET Framework 3.0 (WCF & WPF)。

3、检查IIS是否有.svc到c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll的映射,如果没有,建立映射,建立时取消“检查文件是否存在”的选择。

开始:

1、在VS 2005中新建一个Web Site项目。

添加web.config,将改为。

2、在该项目中添加一个WCF Service,命名为CNBlogsWCFService.svc。

 

 

3、修改App_Code中CNBlogsWCFService.cs的代码:

 

  1. [ServiceContract(Namespace = "http://www.cnblog.com/")]   
  2. public interface ICNBlogsWCFService   
  3. {   
  4. [OperationContract]   
  5. string AddToFavorites(string blogID, string postID);   
  6. }   
  7. public class CNBlogsWCFService : ICNBlogsWCFService   
  8. {   
  9. public string AddToFavorites(string blogID, string postID)   
  10. {   
  11. return string.Format("收藏成功!BlogID:{0},PostID:{1}", blogID, postID);   
  12. }   

4、修改CNBlogsWCFService.svc的代码:

增加:

Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory。

改为:

  1. < %@ ServiceHost Language="C#" Debug="true" Service="CNBlogsWCFService" 
    CodeBehind="~/App_Code/CNBlogsWCFService.cs" 
    Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory"%>
    < %@ ServiceHost Language="C#" Debug="true" Service="CNBlogsWCFService"
     CodeBehind="~/App_Code/CNBlogsWCFService.cs" 
    Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory"%> 

Factory是.NET Framework 3.5 Beta 2中增加的,而我们用的是Visual Studio 2005 extensions for .NET Framework 3.0,所以要手动加上。

如果不通过Ajax调用WCF,需要设置为:Factory="System.ServiceModel.Web.WebServiceHostFactory"。

5、开始***次运行,访问http://localhost/AjaxWCFDemo/CNBlogsWCFService.svc,会出现如下页面:

 

6、继续运行,访问http://localhost/AjaxWCFDemo/CNBlogsWCFService.svc/js,你会看到自动生成访问WCF的客户端代理脚本。

7、OK!服务器端的WCF已经准备好了,下面就开始客户端的访问。

8、配置ASP.NET Ajax调用WCF服务,在web.config中进行设置:

 

  1. < ?xml version="1.0"?> 
  2. < configuration>   
  3. < appSettings/> 
  4. < connectionStrings/> 
  5. < system.web> 
  6. < compilation debug="false"> 
  7. < assemblies> 
  8. < add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, 
    PublicKeyToken=31BF3856AD364E35"/> 
  9. < /assemblies> 
  10. < /compilation> 
  11. < authentication mode="Forms" /> 
  12. < httpHandlers> 
  13. < add verb="*" path="*_AppService.axd" validate="false" 
    type="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, 
    PublicKeyToken=31BF3856AD364E35"/> 
  14. < add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.
    Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, 
    Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/> 
  15. < /httpHandlers> 
  16. < httpModules> 
  17. < add name="ScriptModule" type="System.Web.Handlers.ScriptModule, 
    System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, 
    PublicKeyToken=31bf3856ad364e35"/> 
  18. < /httpModules> 
  19. < /system.web> 
  20. < /configuration>  

 

注意:要设置为3.5版本的System.Web.Extensions,如果使用asp.net ajax 1.0会得不到ASP.NET Ajax调用WCF服务返回的结果。

9、修改default.aspx的代码:

1)添加ScriptManager,将ServiceReference设置为:~/CNBlogsWCFService.svc。

2)将

 

  1. < %@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, 
    Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
  2. Namespace="System.Web.UI" TagPrefix="asp" %>  

改为:

 

  1. < %@ Register Assembly="System.Web.Extensions, Version=3.5.0.0, 
    Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
  2. Namespace="System.Web.UI" TagPrefix="asp" %>  

 

2)添加调用WCF服务的代码,完整代码如下:

 

  1. < %@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" 
    Inherits="_Default" %> 
  2. < %@ Register Assembly="System.Web.Extensions, Version=3.5.0.0, 
    Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
    Namespace="System.Web.UI" TagPrefix="asp" %> 
  3. < !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  4. < html xmlns="http://www.w3.org/1999/xhtml" > 
  5. < head runat="server"> 
  6. < title>Ajax WCF 演示 < /title> 
  7. < /head> 
  8. < body> 
  9. < form id="form1" runat="server"> 
  10. < div align="center" style="margin-top:50px"> 
  11. < asp:ScriptManager ID="ScriptManager1" runat="server"> 
  12. < Services> 
  13. < asp:ServiceReference Path="~/CNBlogsWCFService.svc" /> 
  14. < /Services> 
  15. < /asp:ScriptManager> 
  16. < a href="#" onclick="AddToFavorites('1','2')">收藏< /a>< br /> 
  17. < br /> 
  18. < span style="color:Red" id="Msg">< /span> 
  19. < script type="text/javascript"> 
  20. function AddToFavorites(blogID,postID)  
  21. {  
  22. var wcf = new www.cnblog.com.ICNBlogsWCFService();  
  23. wcf.AddToFavorites(blogID,postID,OnSucceeded);  
  24. }  
  25. function OnSucceeded(result)  
  26. {   
  27. document.getElementById("Msg").innerHTML = result;   
  28. }   
  29. < /script> 
  30. < /div> 
  31. < /form> 
  32. < /body> 
  33. < /html> 

 

 

10、一切就绪,体验一下ASP.NET Ajax调用WCF服务的快乐!

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...