Our team trying to create a windows application(c#) to call a WCF service using internet proxy server
Showing exception "The server committed a protocol violation. Section=ResponseStatusLine" while calling WCF service
Please give suggestion to solve this problem/any other alternative solution
//Code for creating proxy
public static DevicesServiceClient CreateProxy()
{
var proxy = new DevicesServiceClient("BasicHttpBinding_IDevicesService");
BasicHttpBinding binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.None;
binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None;
binding.UseDefaultWebProxy = false;
binding.ProxyAddress = new Uri(string.Format("http://{0}:{1}", "192.168.0.20","808"));
proxy.Endpoint.Binding = binding;
proxy.ClientCredentials.UserName.UserName = "Username";
proxy.ClientCredentials.UserName.Password = "Password";
}
Server stack trace:
at System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException, HttpWebRequest request, HttpAbortReason abortReason)
at ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at DevicesService.IDevicesService.CheckNetworkConnection(String ipAddress)
My client side code in app.config
My server side code in web.config
Code to call wcf service from windows client application using proxy server
{
var proxy = new DevicesServiceClient("BasicHttpBinding_IDevicesService");
BasicHttpBinding binding = new BasicHttpBinding("BasicHttpBinding_IDevicesService");
var proxySettings = ApplicationDetails.CheckProxySettings();
Uri domainAddress;
var strtemp = new string[] { };
//WebProxy webproxy = new WebProxy();
var networkCredentials = new NetworkCredential();
if (proxySettings.ProxyServerType == "http")
{
domainAddress = new Uri(string.Format("http://{0}:{1}", proxySettings.ProxyServerAddress, proxySettings.ProxyServerPort));
}
else if (proxySettings.ProxyServerType == "https")
{
domainAddress = new Uri(string.Format("https://{0}:{1}", proxySettings.ProxyServerAddress, proxySettings.ProxyServerPort));
}
else
{
domainAddress = new Uri(string.Format("http://{0}:{1}", proxySettings.ProxyServerAddress, proxySettings.ProxyServerPort));
}
//
WebProxy webproxy = new WebProxy(domainAddress.ToString(), true, strtemp);
//
//networkCredentials.Domain = domainAddress.ToString();
if (proxySettings.ProxyAuthentication == "1")
{
networkCredentials.UserName = proxySettings.Username;
networkCredentials.Password = proxySettings.Password;
}
webproxy.Credentials = networkCredentials;
webproxy.BypassProxyOnLocal = false;
WebRequest.DefaultWebProxy = webproxy;
binding.UseDefaultWebProxy = true;
proxy.Endpoint.Binding = binding;
}