很少写东西,但是看到别人写的文章自己又禁不住写点,写了有时候又211.html">觉得不好意思给大家看!
今天好不容易鼓起勇气写点……
这几天看了一些WCF的资料
第一感觉是:这玩艺太深了
第二感觉是:这玩艺,挺麻烦的(光配置就搞不明白)
今天调了半天,好不容易把这个返回Json对象,在客户端展示的实例给整理出来了。下面分享给大家
此实例:以IIS为Host承载
1、先建一个WCF Service
建一个ServiceContract接口 1 [ServiceContract]
2 public interface IJsonWCFService
3 {
4 ///
5 /// GetJsonResult
6 ///
7 ///
8 ///
9 ///
10 ///
11 /// 为实现Json序列化,添加属性
12 /// [WebInvoke(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessage
BodyStyle.Wrapped)]
13 ///
14 ///
15 [OperationContract]
16 [WebInvoke(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBody
Style.Wrapped)]
17 JsonResult GetJsonResult(string name, string address, string phone);
18 }
实现这个接口
1 public class JsonWCFService : IJsonWCFService
2 {
3 #region IJsonWCFService Members
4 ///
5 /// Implement the interface
6 ///
7 /// Name
8 /// Address
9 /// PhoneNumber
10 /// JsonResult
11 public JsonResult GetJsonResult(string name, string address, string phone)
12 {
13 JsonResult result = new JsonResult(name, address, phone);
14 return result;
15 }
16 #endregion
17 }
这个地方好像忘记了一个返回的DataContract类
1 [DataContract]
2 public class JsonResult
3 {
4 ///
5 /// Construct
6 ///
7 public JsonResult(string name, string address, string phone)
8 {
9 _name = string.Format("Name:{0}", name);
10 _address = string.Format("Address:{0}", address);
11 _phoneNumber = string.Format("PhoneNubmer:{0}", phone);
12 }
13
14 private string _name;
15 ///
16 /// Name
17 ///
18 [DataMember]
19 public string Name
20 {
21 get { return _name; }
22 set { _name = value; }
23 }
24 private string _address;
25 ///
26 /// Address
27 ///
28 [DataMember]
29 public string Address
30 {
31 get { return _address; }
32 set { _address = value; }
33 }
34 private string _phoneNumber;
35 ///
36 /// PhoneNumber
37 ///
38 [DataMember]
39 public string PhoneNumber
40 {
41 get { return _phoneNumber; }
42 set { _phoneNumber = value; }
43 }
2、为实现Json序列化设置,我们还得添加一个WebContentTypeMapper
(此类最终会用在Service的配置文件中)
1 using System.ServiceModel.Channels;
2
3 namespace Microsoft.Ajax.Samples
4 {
5 ///
6 /// JsonContentTypeMapper
7 /// 用在配置中
8 ///
9 public class JsonContentTypeMapper : WebContentTypeMapper
10 {
11 public override WebContentFormat GetMessageFormatForContentType(string contentType)
12 {
13 if (contentType == "text/javascript")
14 {
15 return WebContentFormat.Json;
16 }
17 else
18 {
19 return WebContentFormat.Default;
20 }
21 }
22 }
23 }
3、添加svc文件,便于发布Service
svc文件其实是十分简单的一个文件,以下是SVC文件中的内容,可以将此文件添加在网站项目的根目录,也可以是一个子目录。对此没有太多的要求。
1 <%@ ServiceHost
Language="C#" Debug="true" Service="JsonWCFService" %>
4、添加web.config文件
WCFService中相当一部分知识是关于配置的,关于这些内容,一直在“研究”。还没有理出来一个比较顺的思路!
1 xml version="1.0"?>
2 <configuration>
3 <appSettings/>
4 <connectionStrings/>
5 <system.web>
6
7 system.web>
8 <system.serviceModel>
9 <behaviors>
10 <endpointBehaviors >
11 <behavior name="jsonWcfBehavior">
12 <webHttp/>
13 behavior>
14 endpointBehaviors>
15 behaviors>
16 <bindings>
17 <customBinding>
18 <binding name="JsonMapper">
19
20 <webMessageEncoding