消息头传输的重要性我们不用多说,我们直接 上代码。这里只是一个小小的代码例子。
客户端代码:
public static T CreateServiceByUrl<T>(string serviceName, WCFBindingEnum bing,string host,int port)
{
try
{
if (string.IsNullOrEmpty(serviceName)) throw new NotSupportedException("This url is not Null or Empty!");
string url = #34;http://{host}:{port}/{serviceName}";
AddressHeader Client_UserId = AddressHeader.CreateAddressHeader("UserInfo", "http://www.xxx.com/", SystemInfo.UserInfo == null ? "" : JsonUtil.ObjectToJSON(SystemInfo.UserInfo));
AddressHeader Client_Date = AddressHeader.CreateAddressHeader("ClientDate", "http://www.xxx.com/", DateTime.Now);
AddressHeader Client_MachineName = AddressHeader.CreateAddressHeader("ClientMachineName", "http://www.xxx.com/", System.Environment.MachineName);
AddressHeader Client_ProcessID = AddressHeader.CreateAddressHeader("ClientProcessID", "http://www.xxx.com/", Process.GetCurrentProcess().Id.ToString());
AddressHeader Client_ProcessName = AddressHeader.CreateAddressHeader("ClientProcessName", "http://www.xxx.com/", Process.GetCurrentProcess().ProcessName);
EndpointAddress address = new EndpointAddress(new Uri(url), Client_UserId, Client_MachineName, Client_ProcessID, Client_Date, Client_ProcessName);
Binding binding = CreateBinding(bing);
ChannelFactory<T> factory = new ChannelFactory<T>(binding, address);
return factory.CreateChannel();
}
catch (Exception ex)
{
throw new Exception("创建服务工厂出现异常.");
}
}
服务器端获取消息头信息
public static class WCFRequestHeaderServiceUntil
{
public static T GetContent<T>(string headerName)
{
int index = OperationContext.Current.IncomingMessageHeaders.FindHeader(headerName, "http://www.xxx.com/");
if (index != -1)
{
return OperationContext.Current.IncomingMessageHeaders.GetHeader<T>(index);
}
return default(T);
}
/// <summary>
/// 获取客户端-客户信息
/// </summary>
/// <returns></returns>
public static UserInfo GetClientUserInfo()
{
string value = GetContent<string>("UserInfo");
if (string.IsNullOrEmpty(value) == true)
{
return null;
}
return JsonUtil.JSONToObject<UserInfo>(value);
}
/// <summary>
/// 获取客户端-请求日期
/// </summary>
/// <returns></returns>
public static DateTime GetClientDate()
{
return GetContent<DateTime>("ClientDate");
}
/// <summary>
/// 获取客户端-电脑名称
/// </summary>
/// <returns></returns>
public static string GetClientMachineName()
{
return GetContent<string>("ClientMachineName");
}
/// <summary>
/// 获取客户端-进程ID
/// </summary>
/// <returns></returns>
public static string GetClientProcessID()
{
return GetContent<string>("ClientProcessID");
}
/// <summary>
/// 获取客户端-进程名称
/// </summary>
/// <returns></returns>
public static string GetClientProcessName()
{
return GetContent<string>("ClientProcessName");
}
}
本文暂时没有评论,来添加一个吧(●'◡'●)