[WCF] Restful 自定义宿主

Posted D&J

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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

 

以上是关于[WCF] Restful 自定义宿主的主要内容,如果未能解决你的问题,请参考以下文章

基于WinService,开发Restful 风格的Wcf 服务端

WCF系列教程之WCF服务宿主

受 SSL 保护的 RESTFul WCF 自托管服务

在 IIS 7.5 上使用 WCF4 自定义浏览器 URL

WCF入门教程三[WCF的宿主]

使用 WCF 客户端访问 RESTful 服务时访问 HTTP 状态代码