2015-02-06 5 views
3

У меня есть метод подключения и использования метода WCF, который находится на HTTPS и требует имени пользователя и пароля в .net 4. Теперь мне нужно сделать то же самое, но внутри .Net 2, и я не могу заставить его работать. Я продолжаю получать ошибку ниже. Может ли кто-нибудь помочь?Использование WCF в .net 2

Ошибка { «Базовое соединение закрыто:. Произошла неожиданная ошибка на получение»} внутреннее исключение { "Невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хозяин "}

.Net 4 Оригинальный код:.

  WSHttpBinding myBinding = new WSHttpBinding(); 
      myBinding.Security.Mode = SecurityMode.Transport; 
      myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic; 
      EndpointAddress ea = new EndpointAddress(wcfURL); 
      var web = new Gateway.GatewayClient(myBinding, ea); 
      // var web = new Gateway.GatewayClient(); 
      XMLCrypto crypto = new XMLCrypto(); 


      web.ClientCredentials.UserName.UserName = crypto.DecryptString(username); 
      web.ClientCredentials.UserName.Password = crypto.DecryptString(password); 
      web.Open(); 
      web.Inbound("HOLog", message.Trim().Replace("\n", "").Replace(@"\\", "")); 
      web.Close(); 

.Net 2 Код

XMLCrypto crypto = new XMLCrypto(); 
      url = "http://..../gateway/gateway.svc"; 
      userName = crypto.DecryptString(userName); 
      password = crypto.DecryptString(password); 

      var web = new Gateway.Gateway(); 
      var credentials = new NetworkCredential(userName, password); 
      CredentialCache credentialCache = new CredentialCache(); 
      credentialCache.Add(new Uri(url), "Basic", credentials); 

      web.Credentials = credentials; 

      string returnMessage = web.Inbound("LSOA", " "); 

ответ

1

После долгого троллинга через Интернет и тестирования различных способов общения с методом WCF я нашел причину, по которой он не работает.

В настоящее время WCF настроен на использование wsHttpBinding, и теперь я знаю, что .net 2, не поддерживает его. Моя работа заключалась в том, чтобы сменить привязку с wsHttpBinding на basicHttpBinding в Web.config WCF.

Чтобы сделать это, а не использовать ничего, используя WCF, мне нужно создать отдельный домен Sub, который предоставит WCF конфигурацию с исправленным привязкой.

«WsHttpBinding не совместим с веб-ссылками в стиле ASMX, используемыми в .NET 2.0». How to consume WCF wsHttpBinding Service in application built in 2.0?