[WCF] Restful 自定义宿主

IPersonRetriever:

/*
 * 由SharpDevelop创建。
 * 用户: Administrator
 * 日期: 2017/6/2
 * 时间: 22:13
 * 
 * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
 */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace WcfRESTful
{
	/// <summary>
	/// Description of IPersonRetriever.
	/// </summary>
	[ServiceContract]
	public interface IPersonRetriever
	{
		[OperationContract]
		[WebInvokeAttribute(UriTemplate = "Persons",Method="POST", ResponseFormat = WebMessageFormat.Json)]
		Person GetPerson();
	}
	
	[DataContract]
	public class Person
	{
		[DataMember]
		public string Name { get; set; }
		[DataMember]
		public int Age { get; set; }
		[DataMember]
		public string Birthday { get; set; }
	}
}

 PersonRetriever:

/*
 * 由SharpDevelop创建。
 * 用户: Administrator
 * 日期: 2017/6/2
 * 时间: 22:15
 * 
 * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
 */
using System;
using System.ServiceModel.Web;

namespace WcfRESTful
{
	/// <summary>
	/// Description of PersonRetriever.
	/// </summary>
	public class PersonRetriever: IPersonRetriever
	{
		public Person GetPerson()
        {
            WebOperationContext.Current.OutgoingResponse.ContentType = "text/plain";
            return new Person { Name = "Test", Age = 22, Birthday = DateTime.Now.ToString("yyyy-mm-dd HH:MM:ss:ffff") };
        }
    }
}

 Program :

/*
 * 由SharpDevelop创建。
 * 用户: Administrator
 * 日期: 2017/6/2
 * 时间: 22:19
 * 
 * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
 */
using System;
using System.ServiceModel;
using System.ServiceModel.Description;

namespace WcfRESTful
{
	class Program
	{
		public static void Main(string[] args)
		{
			Console.WriteLine("Hello World!");
			
			// TODO: Implement Functionality Here
			
			Uri baseAddress = new Uri("http://127.0.0.1:9998/PersonRetriever");
			using (ServiceHost host = new ServiceHost(typeof(PersonRetriever), baseAddress)) {
				WebHttpBinding binding = new WebHttpBinding();
				ServiceEndpoint endpoint = host.AddServiceEndpoint(typeof(IPersonRetriever), binding, baseAddress);
				WebHttpBehavior httpBehavior = new WebHttpBehavior();
				endpoint.Behaviors.Add(httpBehavior);
				host.Opened += delegate {
					Console.WriteLine("Hosted successfully.");
				};
				host.Open();
				Console.ReadLine();
			}
			
			Console.Write("Press any key to continue . . . ");
			Console.ReadKey(true);
		}
	}
}

 截图 :

源码: http://files.cnblogs.com/files/Areas/WcfRESTful.zip

原文地址:https://www.cnblogs.com/Areas/p/6935547.html