1、首先需要一个ServiceContract
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.ServiceModel.Web; using System.Text; namespace WcfTest { [ServiceContract] public interface IRestService { [OperationContract] [WebInvoke(Method = "GET", UriTemplate = "User/Get/{uid}", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)] NUser GetUser(String uid); [OperationContract] [WebInvoke(Method = "POST", UriTemplate = "/User", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)] string UpdateUser(NUser newuser); [OperationContract] [WebInvoke(Method = "PUT", UriTemplate = "/User", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)] string AddUser(NUser newuser); [OperationContract] [WebInvoke(Method = "DELETE", UriTemplate = "/User", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)] string DeleteUser(String uid); } [DataContract] public class NUser { string uid = ""; string uname = ""; string usex = ""; [DataMember] public String Uid { get { return uid; } set { uid = value; } } [DataMember] public string UName { get { return uname; } set { uname = value; } } [DataMember] public string USex { get { return usex; } set { usex = value; } } } }
2、然后需要实现服务
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.ServiceModel.Activation; using System.ServiceModel.Web; using System.Text; namespace WcfTest { public class RestService : IRestService { static List<NUser> users = new List<NUser>(); static RestService() { NUser aNUser = new NUser(); aNUser.Uid = "001"; aNUser.UName = "张三"; aNUser.USex = "男"; users.Add(aNUser); } public NUser GetUser(string uid) { foreach (NUser nuser in users) { if (nuser.Uid == uid) { return nuser; } } return null; } public string UpdateUser(NUser newuser) { if (newuser == null) { return "nuewuser is null"; } foreach (NUser nuser in users) { if (nuser.Uid == newuser.Uid) { nuser.UName = newuser.UName; newuser.USex = nuser.USex; return "User updated"; } } return "User not found"; } public string AddUser(NUser newuser) { if (newuser == null) { return "nuewuser is null"; } foreach (NUser nuser in users) { if (nuser.Uid == newuser.Uid) { nuser.UName = newuser.UName; newuser.USex = nuser.USex; return "User updated"; } } users.Add(newuser); return "User added"; } public string DeleteUser(String uid) { bool bFound = false; for(int i=users.Count-1;i>=0;i--) { if (users[i].Uid == uid) { bFound = true; users.RemoveAt(i); } } if (!bFound) { return "User Not Found"; } else { return "User Deleted"; } } } }
3、修改服务的Markup
<%@ ServiceHost Language="C#" Debug="true" Service="WcfTest.RestService" CodeBehind="RestService.svc.cs" Factory="System.ServiceModel.Activation.WebServiceHostFactory"%>
4、修改服务配置
添加serviceBehaviors、endpointBehaviors、service、endpoint
<?xml version="1.0"?> <configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> </system.web> <system.serviceModel> <services> <service behaviorConfiguration="RestSvcBehavior" name="WcfTest.RestService"> <endpoint binding="webHttpBinding" contract="WcfTest.IRestService" address="" behaviorConfiguration="RestEPBehavior"/> </service> </services> <behaviors> <endpointBehaviors> <behavior name="RestEPBehavior"> <webHttp /> </behavior> </endpointBehaviors> <serviceBehaviors> <behavior name="RestSvcBehavior"> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="true" /> </behavior> <behavior name=""> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="true" /> </behavior> </serviceBehaviors> </behaviors> <serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true" /> </system.serviceModel> <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> <directoryBrowse enabled="true"/> </system.webServer> </configuration>
5、访问服务
http://ip:port/RestService.svc/User/Get/001