ASP.NET Ajax调用WCF服务示例
Posted bbc2020
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于ASP.NET Ajax调用WCF服务示例的主要内容,如果未能解决你的问题,请参考以下文章
选择哪一个:ASP.NET MVC 还是 RESTful WCF?
从 jQuery 调用 ASP.NET 4.0 WCF 服务会产生 400 Bad Request
ASP.net CRUD WCF AJAX 后调用方法不允许
我应该通过 ASP.NET MVC 操作还是 WCF 公开 Web 方法?
尽管有 web.config 条目,但带有 ASP.NET WCF 服务的 jQuery AJAX CORS 无法正常工作