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