/// <summary> /// Shows the service. /// </summary> /// <param name="serviceInfo">The service info.</param> public void ShowService(ServiceInfoWrapper serviceInfo) { var fieldInfo = typeof(ServiceHost).GetField("serviceType", BindingFlags.Instance | BindingFlags.NonPublic); if (fieldInfo != null) { var serviceType = fieldInfo.GetValue(serviceInfo.Host) as Type; if (serviceType == null) return; var interfaces = serviceType.GetInterfaces(); if (interfaces.Length < 1) return; var serviceInterface = interfaces[0]; Text = serviceInterface.Name + " - WCF Service Test Harness"; } var protocol = Protocol.NetTcp; switch (serviceInfo.Protocol.ToLower()) { case "basic http": case "basichttp": protocol = Protocol.BasicHttp; Text = Text.Replace(" - WCF Service Test Harness", " - Basic HTTP - WCF Service Test Harness"); break; case "ws http": case "wshttp": protocol = Protocol.WsHttp; Text = Text.Replace(" - WCF Service Test Harness", " - WsHTTP - WCF Service Test Harness"); break; case "in process": case "inprocess": protocol = Protocol.InProcess; Text = Text.Replace(" - WCF Service Test Harness", " - In Process - WCF Service Test Harness"); break; case "rest http (xml)": protocol = Protocol.RestHttpXml; Text = Text.Replace(" - WCF Service Test Harness", " - REST XML - WCF Service Test Harness"); break; case "rest http (json)": protocol = Protocol.RestHttpJson; Text = Text.Replace(" - WCF Service Test Harness", " - REST JSON - WCF Service Test Harness"); break; case "net.tcp": case "nettcp": Text = Text.Replace(" - WCF Service Test Harness", " - TCP/IP - WCF Service Test Harness"); break; } var size = MessageSize.Medium; switch (serviceInfo.MessageSize.ToLower()) { case "normal": size = MessageSize.Normal; break; case "large": size = MessageSize.Large; break; } _ui.ShowService(serviceInfo.Host, serviceInfo.Port, string.Empty, protocol, size, new Uri(serviceInfo.Url)); }
/// <summary> /// Adds the service info. /// </summary> /// <param name="serviceType">Type of the service.</param> /// <param name="contractType">Type of the contract.</param> /// <param name="url">The URL.</param> /// <param name="binding">The binding.</param> /// <param name="host">The actual service host</param> private void AddServiceInfo(Type serviceType, Type contractType, string url, string binding, ServiceHost host) { if (contractType == null) { var interfaces = serviceType.GetInterfaces(); contractType = interfaces.Length == 1 ? interfaces[0] : serviceType; } var uri = !string.IsNullOrEmpty(url) ? new Uri(url) : null; var port = uri != null ? uri.Port : 0; var info = new ServiceInfoWrapper { ServiceContract = contractType, ServiceType = serviceType, Url = url, Host = host, Protocol = binding, WsdlExposed = "No", Port = port }; long messageSize = 0; if (host != null) { foreach (var dispatcher in host.ChannelDispatchers) { var listener = dispatcher.Listener; if (listener != null) { var listenerType = listener.GetType(); var propertyInfo = listenerType.GetProperty("MaxReceivedMessageSize", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (propertyInfo != null) { messageSize = Math.Max((long)propertyInfo.GetValue(listener, null), messageSize); if (messageSize < 1024 * 1024 * 10) { info.MessageSize = "Normal"; } else if (messageSize >= 1024 * 1024 * 100) { info.MessageSize = "Large"; } else { info.MessageSize = "Medium"; } } var propertyInfo2 = listenerType.GetProperty("Uri", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (propertyInfo2 != null) { var listenerUri = propertyInfo2.GetValue(listener, null) as Uri; if (listenerUri != null) { if (listenerUri.AbsoluteUri.ToLower().EndsWith("/wsdl")) { info.WsdlExposed = "Yes"; } } } } } } var item = new ListViewItem(new[] { contractType.Name + " (" + serviceType.Name + ")", (!string.IsNullOrEmpty(url) ? "Started" : "Failed"), url, binding, info.MessageSize, info.WsdlExposed }) { Tag = info }; switch (binding.ToLower()) { case "rest http (xml)": item.ImageIndex = 2; break; case "rest http (json)": case "http-get": item.ImageIndex = 1; break; case "basic http": case "ws http": item.ImageIndex = 3; break; case "net.tcp": item.ImageIndex = 0; break; default: item.ImageIndex = 0; break; } if (string.IsNullOrEmpty(url)) { item.ForeColor = Color.Red; } listView1.Items.Add(item); listView1.Sort(); }
/// <summary> /// Shows the service. /// </summary> /// <param name="serviceInfo">The service info.</param> public void ShowService(ServiceInfoWrapper serviceInfo) { var fieldInfo = typeof(ServiceHost).GetField("serviceType", BindingFlags.Instance | BindingFlags.NonPublic); if (fieldInfo != null) { var serviceType = fieldInfo.GetValue(serviceInfo.Host) as Type; if (serviceType == null) { return; } var interfaces = serviceType.GetInterfaces(); if (interfaces.Length < 1) { return; } var serviceInterface = interfaces[0]; Text = serviceInterface.Name + " - WCF Service Test Harness"; } var protocol = Protocol.NetTcp; switch (serviceInfo.Protocol.ToLower()) { case "basic http": case "basichttp": protocol = Protocol.BasicHttp; Text = Text.Replace(" - WCF Service Test Harness", " - Basic HTTP - WCF Service Test Harness"); break; case "ws http": case "wshttp": protocol = Protocol.WsHttp; Text = Text.Replace(" - WCF Service Test Harness", " - WsHTTP - WCF Service Test Harness"); break; case "in process": case "inprocess": protocol = Protocol.InProcess; Text = Text.Replace(" - WCF Service Test Harness", " - In Process - WCF Service Test Harness"); break; case "rest http (xml)": protocol = Protocol.RestHttpXml; Text = Text.Replace(" - WCF Service Test Harness", " - REST XML - WCF Service Test Harness"); break; case "rest http (json)": protocol = Protocol.RestHttpJson; Text = Text.Replace(" - WCF Service Test Harness", " - REST JSON - WCF Service Test Harness"); break; case "net.tcp": case "nettcp": Text = Text.Replace(" - WCF Service Test Harness", " - TCP/IP - WCF Service Test Harness"); break; } var size = MessageSize.Medium; switch (serviceInfo.MessageSize.ToLower()) { case "normal": size = MessageSize.Normal; break; case "large": size = MessageSize.Large; break; } _ui.ShowService(serviceInfo.Host, serviceInfo.Port, string.Empty, protocol, size, new Uri(serviceInfo.Url)); }
/// <summary> /// Adds the service info. /// </summary> /// <param name="serviceType">Type of the service.</param> /// <param name="contractType">Type of the contract.</param> /// <param name="url">The URL.</param> /// <param name="binding">The binding.</param> /// <param name="host">The actual service host</param> private void AddServiceInfo(Type serviceType, Type contractType, string url, string binding, ServiceHost host) { if (contractType == null) { var interfaces = serviceType.GetInterfaces(); contractType = interfaces.Length == 1 ? interfaces[0] : serviceType; } var uri = !string.IsNullOrEmpty(url) ? new Uri(url) : null; var port = uri != null ? uri.Port : 0; var info = new ServiceInfoWrapper { ServiceContract = contractType, ServiceType = serviceType, Url = url, Host = host, Protocol = binding, WsdlExposed = "No", Port = port }; long messageSize = 0; if (host != null) foreach (var dispatcher in host.ChannelDispatchers) { var listener = dispatcher.Listener; if (listener != null) { var listenerType = listener.GetType(); var propertyInfo = listenerType.GetProperty("MaxReceivedMessageSize", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (propertyInfo != null) { messageSize = Math.Max((long) propertyInfo.GetValue(listener, null), messageSize); if (messageSize < 1024*1024*10) info.MessageSize = "Normal"; else if (messageSize >= 1024*1024*100) info.MessageSize = "Large"; else info.MessageSize = "Medium"; } var propertyInfo2 = listenerType.GetProperty("Uri", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (propertyInfo2 != null) { var listenerUri = propertyInfo2.GetValue(listener, null) as Uri; if (listenerUri != null) if (listenerUri.AbsoluteUri.ToLower().EndsWith("/wsdl")) info.WsdlExposed = "Yes"; } } } var item = new ListViewItem(new[] {contractType.Name + " (" + serviceType.Name + ")", (!string.IsNullOrEmpty(url) ? "Started" : "Failed"), url, binding, info.MessageSize, info.WsdlExposed}) {Tag = info}; switch (binding.ToLower()) { case "rest http (xml)": item.ImageIndex = 2; break; case "rest http (json)": case "http-get": item.ImageIndex = 1; break; case "basic http": case "ws http": item.ImageIndex = 3; break; case "net.tcp": item.ImageIndex = 0; break; default: item.ImageIndex = 0; break; } if (string.IsNullOrEmpty(url)) item.ForeColor = Color.Red; listView1.Items.Add(item); listView1.Sort(); }