ASP.NET Ajax调用WCF服务示例

准备

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 2007年6月Community Technology Preview(CTP),走了一些弯路。

2,安装用于.NET Framework 3.0(WCF和WPF)的Visual Studio 2005扩展。

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

开始

1,在VS 2005中新建一个网站项目。

添加web.config,将更改。

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

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

以下是引用片段:

 

 


[ServiceContract(Namespace =“ http://www.51csharp.com/”)]公共接口ICNBlogsWCFService {[OperationContract]字符串AddToFavorites(字符串blogID,字符串postID);}公共类CNBlogsWCFService:ICNBlogsWCFService {公共字符串AddToFavorites(字符串blogID,字符串postID){返回string.Format(“收藏成功!BlogID:{0},PostID:{1}”,blogID,postID);}}

 

如果想进一步了解上述代码,请参考:

Artech:[原创]我的WCF之旅(1):创建一个简单的WCF程序Bruce Zhang:Windows Communication Foundation入门(第二部分)

4,修改CNBlogsWCFService.svc的代码:

增加:以下是引用片段:

 

 

Factory =“ System.ServiceModel.Activation.WebScriptServiceHostFactory

 

转变:

以下是引用片段:

 

 




<%@ ServiceHost语言=“ C#” Debug =“ true” Service =“ CNBlogsWCFService” 
CodeBehind =“〜/ App_Code / CNBlogsWCFService.cs” 
Factory =“ System.ServiceModel.Activation.WebScriptServiceHostFactory”%>

 

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

如果不通过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,在web.config中进行设置:

以下是引用片段:

 

 


<?xml version =“ 1.0”?>
<配置>  
<appSettings />
<connectionStrings />
<system.web>
<compilation debug =“ false”>
<组件>
<add assembly =“ System.Web.Extensions,Version = 3.5.0.0,Culture = neutral, 
           PublicKeyToken = 31BF3856AD364E35“ />
</ assembly>
</ compilation>
<authentication mode =“表单” />
<httpHandlers>
<add verb =“ *” path =“ * _ AppService.axd” validate =“ false” 
         type =“ System.Web.Extensions,Version = 3.5.0.0,Culture = neutral, 
         PublicKeyToken = 31BF3856AD364E35“ />
<add verb =“ GET,HEAD” path =“ ScriptResource.axd” 
         type =“ System.Web.Handlers.ScriptResourceHandler,System.Web.Extensions, 
         版本= 1.0.61025.0,文化=中性,PublicKeyToken = 31bf3856ad364e35” 
         validate =“ false” />
</ httpHandlers>
<httpModules>
<add name =“ ScriptModule” type =“ System.Web.Handlers.ScriptModule, 
         System.Web.Extensions,版本= 1.0.61025.0,文化=中性, 
           PublicKeyToken = 31bf3856ad364e35“ />
</ httpModules>
</system.web>
</ configuration>

 

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

9,修改default.aspx的代码:

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

2)将

以下是引用片段:

 

 


<%@ Register Assembly =“ System.Web.Extensions,Version = 1.0.61025.0, 
  文化=中性,PublicKeyToken = 31bf3856ad364e35“
Namespace =“ System.Web.UI” TagPrefix =“ asp”%>

 

转变:

以下是引用片段:

 

 


<%@ Register Assembly =“ System.Web.Extensions,Version = 3.5.0.0, 
   文化=中性,PublicKeyToken = 31BF3856AD364E35”
Namespace =“ System.Web.UI” TagPrefix =“ asp”%>

 

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

以下是引用片段:

 

 


<%@页面语言=“ C#” AutoEventWireup =“ true”

CodeFile =“ Default.aspx.cs” Inherits =“ _ Default”%> <%@注册Assembly =“ System.Web.Extensions,版本= 3.5.0.0,

文化=中性,PublicKeyToken = 31BF3856AD364E35”

Namespace =“ System.Web.UI” TagPrefix =“ asp”%> <!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> Ajax WCF演示</ title> </ head> <body> <form id =” form1“ runat =” server“> <div align =” center“ style =” margin-top:50px“> < asp:ScriptManager ID =“ ScriptManager1” runat =“ server”> <服务> <asp:ServiceReference Path =“〜/ CNBlogsWCFService.svc” /> </服务> </ asp:ScriptManager> <a href =“#” onclick =“ AddToFavorites('1','2')”>收藏</a> <br /> <br /> <span style =“ color:Red” id =“ Msg”> </ span>

<script type =“ text / javascript”>函数AddToFavorites(blogID,postID){var wcf =新的www51csharp.com.ICNBlogsWCFService(); wcf.AddToFavorites(blogID,postID,OnSucceeded); }函数OnSucceeded(result){document.getElementById(“ Msg”)。innerHTML = result; } </ script>

</ div> </ form> </ body> </ html>

 

10,一切就绪,体验一下Ajax调用WCF的快乐!*伟13802269370   北京*微13802269370  *微13802269370   *电13802269370   北京*电13802269370  上海*微13802269370

上一篇:filters获取data中的数据


下一篇:C++知识点61——typename与class、模板编程与继承、模板类和友元、类模板与static成员