如何创建一个AJAX-Enabled WCF Service》中的web.config,因为需要AJAX,endpointBehaviors用了,但是enableWebScript...和REST需要的UriTemplate是有冲突的,所以这里不再使用。...endpointBehaviors中设置可以生成WCF Service的Help页面。 ?...对于PUT和DELETE,需要身份验证信息,所以我们先暂时只允许匿名访问,在web.config中将authentication mode设置为None。...中设置可以生成WCF Service的Help页面 GET(查),POST(改),PUT(增),DELETE(删) 对于PUT和DELETE,需要身份验证信息
昨天在调试项目时,意外发现一个奇怪的问题,实在不知道如何准确描述,所以随便起了个标题。...] [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json)] public string Test() { return...在非IE浏览器里用 http://localhost/wcf/service.svc/Test/ 测试(因为IE7以上版本好象不能直接打开访问wcf中的办法,会提示禁止访问,所以只能用ff,chrome...一切都很理想 后来因为项目需要,有人觉得Test这个名称太土,想换个名字,而程序员又不乐意,于是用UriTemplate起了个别名HelloWorld应付,如下: /**//// /...; } 浏览器里用http://localhost/wcf/service.svc/HelloWorld 测试,报错如下: 使用“UriTemplate”的终结点无法用于“System.ServiceModel.Description.WebScriptEnablingBehavior
这里我们将演示ExtJs的FormPanel从WCF加载数据,以及如何提交数据到WCF服务端 1.首先来定义一个用于传输信息的Class(实际开发中,可以是Linq to Sql的Class或任何可序列化的实体类...端的数据,SaveMyData,SaveMyData2用来保存ExtJs提交过来的数据,区别是SaveMyData用于Get方法,SaveMyData2用于Post方法 需要说明的是[WebInvoke...id={id}&text={text}")]这一行,这里标明该方法可用Get/Post来处理数据,输出格式是Json字符串,UriTemplate表示该方法支持RESTFul风格,可用/MyService.svc...id=xxx&text=xxx来访问(关于RESTFul WCF,可参见雨痕的文章http://www.rainsts.net/article.asp?...", params: { id: "001", text: "Get方法提交的数据" }, //这里为了演示用,随便给出几个值,实际开发时,
对于WCF来说,服务调用请求的URI映射为某个具体的操作,所以服务端需要解决的是如何根据请求URI选择出对应的操作。.../en-us/library/bb675245.aspx 二、UriTemplate 在Web HTTP编程模型中,URI模板通过具有如下定义的UriTemplate表示。...IgnoreTrailingSlash属性返回调用构造函数指定的同名参数,默认值为True,意味着在默认情况在模板字符串结尾指定的斜杠会被忽略。...在BindByPosition方法中我们以字符串数组的形式指定变量值,URI模板中的变量会按照出现的先后顺利进行替换并最终得到一个完整的URI。...当我们指定某个Uri对象调用它的Match方法时,会遍历集合中的所有UriTemplate对象并调用它的Match方法,最终返回一个UriTemplateMatch集合。
不废话了,直奔主题吧 wcf端: 近几年比较流行restful,为了能让ajax调用,同时也为了支持restful风格的uri,在创建一个Ajax-enabled Wcf Service后,必须手动修改...将无法用类似http://localhost/helloWorld.svc/Hello/person/name 的restful方式直接访问。...同时还要去掉web.config中的即类似: UriTemplate = "RestfulTest/{person}/{welcome}", ResponseFormat = WebMessageFormat.Json...暴露的方法中可能需要一些敏感信息做为参数(比如用户名/用户ID之类),这时如果直接用js来调用wcf,可能会把这部分信息泄漏在客户端,这种场景下,我们也经常用一个服务端的ashx来做中转 TestService.svc
webPart功能,用它可以轻松开发出具有web2.0风格的个性化网站功能,比如拖放,定制标题栏等,但是WebPart的设计是属于重量级的,每次拖动都会引起页面回发,导致数据库读写以及大量的数据传输(即使在最外层套一个...MajicAjax之类的,也是如此),另外WebPart在非IE标准浏览器上有些功能也不能正常使用。...(muxrwc兄的作品,博客地址http://blog.csdn.net/muxrwc),这上面已经实现得很不错的,布局的保存是用cookie实现的,我们把它修改为利用数据库保存(主要思路就是保存布局时把...cookie字符串存到数据库中,加载时从数据库里取出数据初始化),修改后的演示效果地址为http://ext.cneds.net(随时可能会被停掉,呵呵) 1.数据库结构: (1)布局表T_LayOut...部分 (1)新建一个启用了Ajax的WCF:MyData.svc svc文件中,修改为 <%@ ServiceHost Language="C#" Debug="true" Service="GetData
、Ruby、JavaScript,甚至是 HTML FORM,或者直接在浏览器地址栏输入 WCF 中通过 WebGetAttribute、WebInvokeAttribute (GET/PUT/...2、 项目文件介绍 (1) IService1.cs 定义服务契约,在接口方法中定义RestFul请求规则。...(3) People.cs 数据契约,定义的实体对象 (4) Global.asax 全局资源文件中定义注册路由 (5) Web.config 配置WCF服务。...中的一个配置相关,我们在下文中详细介绍。... 说明:在配置文件中我们看
在默认的情况下,帮助页面中表示操作描述信息的格式为“Service at {操作地址}”,我们可以在定义服务契约的时候再操作方法上应用特性DescriptionAttribute来定义出现在帮助页面中的描述信息...employee); 15: 16: [WebInvoke(UriTemplate = "/", Method = "PUT")] 17: [Description("...修改现有员工信息")] 18: void Update(Employee employee); 19: 20: [WebInvoke(UriTemplate = "{id...在默认的情况下,这种自动选择机制是关闭的,我们需要通过WebHttpBehavior的AutomaticFormatSelectionEnabled属性开启该机制。...,所以我们完全可以手工生成HTTP请求来进行服务的访问。
在Web Http编程模型中,包含的主要的类型有:WebHttpBinding, WebHttpBehavior, WebGetAttribute/WebInvokeAttribute和WebServiceHost...对于SOAP协议来说,操作的选择是通过来决定的,而在这儿时通过UriTemplate属性表示的一个URI模板来决定的,常见的路由例子如接下来的,/filename....id); 11 12 [WebInvoke(UriTemplate = "/", Method = "POST")] 13 void Create(Employee employee); 14 15...[WebInvoke(UriTemplate = "/", Method = "PUT")] 16 void Update(Employee employee); 17 18 [WebInvoke(...WCF全面解析[M]. 上海:电子工业出版社, 2012.
微软在WCF 3.5中就通过提供基于Web HTTP的编程模式使我们很容易地创建基于REST的服务,WCF 4.0中对此进行了较大的改进。...为了让读者对REST在WCF中的应用有一个大致的了解,我们先来进行一个简单的实例演示。 [源代码从这里下载] 一、定义服务契约 在这个实例中,我们创建一个简单的服务来管理员工的基本信息。...8: Employee Get(string id); 9: 10: [WebInvoke(UriTemplate = "/", Method = "POST")]...WebGetAttribute和WebInvokeAttribute和均具有相同的属性UriTemplate,该属性用于定义作为最终操作URI的模板。...同样以定义在契约接口IEmployeesService中的5个操作方法为例,如果终结点地址为http://127.0.0.1:3721/employees,由于用于返回所有员工列表的GetAll操作的UriTemplate
WCF Web API支持多个宿主环境:自宿主(windows服务或者控制台)和IIS宿主(asp.net webform/mvc)。...如果你的请求API是http://localhost:9000/api/contacts/1 的ID将被设置为1,Web API支持将模板参数自动转换为原生类型int。.../json; charset=utf-8 Connection: Close {"ContactId":7,"Name":"New Person1"} 5、以XML格式发送数据 以xml方式发布,需要替换...application/xml 替换“Request Body”为以下内容 New Person2 按下“Execute”,然后双击左窗格中的结果...制定PUT和DELETE 打开ConactApi.cs把以下代码拷进去 [WebInvoke(UriTemplate ="{id}", Method = "PUT")] public Contact
,需要手动在类前加上数据契约 [DataContract],在属性前加上[DataMember] 如下: [Table(Name="dbo.T_Class")] [DataContract..."> 说明一下:(3),(4)二步是必须的,目的是为了生成Restful WCF,可以在ExtJs里用类似"MyService.svc...中,否则网格上右击,设置显示列时,报JS错误,原因不明。...,必须是id对应的列,否则出错 4.服务端的类中,如果有DateTime字符的字段,需要手动修改dbml对应的cs文件,把DateTime改成string,否则序列化时,会产生很怪的值,估计是.Net...在序列化成JSON时的bug. 5.为了减少生成的JSON字符串的大小,可以仅在需要输出的类属性上标记[DataMember],这样在生成的JSON字符串,不会包含未标记为[DataMember]的字段
个人认为,XTemplate是ExtJs中最灵活的用来显示数据的组件,有点类似aspx中的Repeater控件,显示数据的模板完全可以由用户以html方式来定制....先给一个官方的静态示例(稍微改了下),代码并不复杂,关键的地方,我已经注释了 Ext.onReady(function()...', //表明这里循环读取drinks节的数据,当数据没有属性名称时,用"."...----> c.在wcf中增加一个方法,代码如下: Code [OperationContract] [WebInvoke...,其它地方完全一样,需要注意的是: a.返回的字符串,需要用Ext.Util.JSON.decode转换成JSON对象 b.为了显示出loading加载效果,在调用Ajax的Request之前,用demo.com.innerHTML
为此我们需要一个第三方的用于序列化DateTime的小工具Newtonsoft.Json.dll,它是专门用于将对象序列化成Json字符串。...服务,并添加一个方法: Code [OperationContract] [WebInvoke(ResponseFormat = WebMessageFormat.Json,UriTemplate...Ext.util.JSON.decode(data) tpl.overwrite("BBS", data); //其实下面这四句在本例中没什么大的作用...这里已经成功序列化了,但是wcf的服务在返回时,必须要有一种格式,要么xml,要么json,所以我们指定了wcf以json格式返回后,会对正常的结果再做一次序列化,最后的结果是使字符串前后都加上了双引号...,除了wcf返回的字符串,就没其它东西了,性能上会提高 b.相对而言,ExtJs的Ajax请求方式,我觉得比aspx.net ajax的更容易操作.
如下所示: WCF服务:如果你想你的WCF服务应该发送JSON消息,而不是SOAP,可以设置“ResponseFormat”作为你的操作协定“WebMessageFormat.Json”。...[OperationContract] [WebInvoke(Method="GET", UriTemplate="/GetData", RequestFormat=WebMessageFormat.Json...如在一个MVC中,可通过“getEmployee”函数返回employ的JSON对象。...第三个参数,在JavaScript中,用回调函数对返回的Employee对象进行处理。 因为输出是JSON,它会自动将JSON数据转换为JavaScript对象。...要转换一个JSON字符串到C#对象,我们需要使用“JavaScriptSerializer”类,并使用“反序列化”,我们将字符串转换为C#对象。
,自个儿琢磨了一下,发现自己弄一个也并非难事,思路和主要代码分享如下: 1.通用的“海量”数据分页存储过程 在做aspx开发时我已经用存储过程分页多年,这个东东是通用的(不管前端用什么语言来做),而且性能也不错...,仅需要知道总页数和总记录数的特殊情况调用 2.利用wcf直接或间接调用存储过程,返回json数据 wcf能返回json数据已经不是什么新鲜事儿了,这里就不多说了,贴出主要代码(直接拿我以前封装好的工具库中的一个方法示例一下...(Method = "*", ResponseFormat = WebMessageFormat.Json, UriTemplate = "SelectPageData?...public string F_Type { get; set; } } } 主要思路: 定义一组变量变于保存查询参数(包括当前第几页,每页多少条记录之类),然后利用WebClient访问...wcf,将json数据download回来,成功后解析为json对象,再转化为强类型的List,最后绑定完事 运行效果图: ?
实例演示:通过自定义Route对ASP.NET路由系统进行扩展 定义在ASP.NET路由系统中默认的路由类型Route建立了定义成文本模板的URL模式与某个物理文件之间的映射,如果我们对WCF REST...具体来说,WCF REST借助于System.UriTemplate这个对象实现了同样定义成某个文本模板的URI模式与目标操作之间的映射。...在用于生成出栈URL的GetVirtualPath方法中,我们通过定义在URL模板中的模板(包括变量名包含在属性PathSegmentVariableNames的路径段变量和包含在QueryValueVariableNames...我个人具有基于UriTemplate的URI模板比针对Route的URL模板更好用,其中一点就是它在定义默认值方法更为直接。...如下面的代码片断所示,我们直接将默认值定义在模板中(("{areacode=010}/{days=2})。
终于开始正式学习silverlight,虽然有点晚,但总算开始了,今天看了一下sdk,主要是想看下silverlight中如何动态调用数据,对于数据库的访问,sdk中的官方示例多用的是Ado.Net数据服务...sdk中提到silverlight中System.Json已经完成了对json的解析 经实验,用WebClient貌似就能解析一切,包括加载json文本,纯文本,以及wcf,不过要注意的是:xap与被调用的...的代码也在这里贴出来,就是一"启用了ajax的wcf服务",没啥特别的,下面的代码仅参考(从NorthWind数据库中,读取了表Categories的部分信息) Code using System.Configuration...(Method = "GET", ResponseFormat = WebMessageFormat.Json, UriTemplate = "GetData?...第二个高亮部分是控制EntitySet(其实就是对应的表一级)的访问权限。
一.WCF部分 1.通过查看官方的示例得知,分页数据源需要一个记录总数值,为保持通用性,这里借鉴jillZhang的文章,把他写的通用类PageData拿过来直接用 1 using System;...方法:GetDataByPage [OperationContract] [WebInvoke(Method = "*", ResponseFormat = WebMessageFormat.Json...,UriTemplate = "GetDataByPage?... db.Connection.Close(); } return _Result; } 这里讲一个小技巧,也是从jillZhang那里学过来的,以前默认在linq...to sql(dbml)设计器里拖出来的类,默认生成的代码是不支持序列化的,我们只能手动添加[DataContract]和[DataMember], 其实系统可以自动生成的,方法是在dbml的属性栏里设置
对于Web HTTP编程模型来说,服务契约中作为操作的方法无须应用OperationContractAttribute特性,只需要根据需要应用WebGetAttribute与WebInvokeAttribute...>,而整个内嵌于元素中。...风格下具有怎样的结构,为此我们只需要将应用在Create操作方法上的WebInvokeAttribute特性的BodyStyle属性设置为Wrapped。...六、Bare回复消息风格对单一输出的要求 由于回复参数是对返回值、引用参数和输出参数的封装,所以当操作方法具有引用参数或者输出参数时不能将回复消息的主体风格设置为Bare。...当 WebGetAttribute/WebInvokeAttribute 的 BodyStyle 属性设置为 Bare 时,只允许使用返回值。
领取专属 10元无门槛券
手把手带您无忧上云