Получение неожиданной ошибки закрытия для службы WCF на производстве и QA - PullRequest
0 голосов
/ 22 января 2012

Я подключаюсь к веб-сервису, созданному компанией, которая проверяет электронную почту. Когда я запускаю его локально, я не получаю никаких ошибок, но когда я загружаю модуль на свои компьютеры контроля качества и производства, у меня появляется тайм-аут, я увеличивал тайм-аут до 00:05:00 с 00:01:00, и теперь я получаю ошибку:

Базовое соединение было закрыто: соединение, которое, как предполагалось, было поддержано, было закрыто сервером.mscorlibVoid HandleReturnMessage (System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Messaging.IMessage) стек сервера трассировки: в System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException (WebException WebException, HttpWebRequest запрос, HttpAbortReason abortReason) в System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply (TimeSpan таймаута) в System.ServiceModel.Channels.RequestChannel .Request (сообщение-сообщение, время ожидания TimeSpan) в System.ServiceModel.Channels.ServiceChannel.Call (действие String, логический метод oneway, операция ProxyOperationRuntime, Object [] ins, Object [] outs, TimeSpan timeout) в System.ServiceModel.Channels.ServiceChannelProxy .InvokeService (метод IMethodCallMessageCall, операция ProxyOperationRuntime) в System.ServiceModel.Channels.ServiceChannelProxy.Invoke (IMessage m essage) Исключение, переброшенное в [0]: в System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (IMessage reqMsg, IMessage retMsg) в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData & msgata) Common.SI.EmailVerificationSoap.VerifyEmail (запрос VerifyEmailRequest) по адресу Redacted.Common.SI.EmailVerificationSoapClient.Redacted.Common.SI.EmailVerificationSoap.VerifyEmail (запрос VerifyEmailRequest) по адресу Redacted.Clierfofo.SicInfo. Тайм-аут Int32, SIWsOutputOfVerifyEmailRecord & VerifyEmailResult) в Redacted.Common.ValidationHelper.ValidateEmailByService (электронная почта String) в Redacted.WindowServices.Form3.RunSpFirstTime () ожидаемое соединение было закрыто для того, чтобы соединение было закрыто для того, чтобы было закрыто соединение, которое было закрыто, поскольку исходное соединение было закрыто: .Net.WebResponse GetResponse () в System.Net.HttpWebRequest.GetResponse () в System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.Htt pChannelRequest.WaitForReply (TimeSpan timeout) Невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом. Считывание SystemInt32 (Byte [], Int32, Int32) в System.Net.Sockets.NetworkStream.Read (Byte [] буфер, смещение Int32, размер Int32) в System.Net.PooledStream.Read (буфер Byte [], смещение Int32, размер Int32) в System.Net.Connection.SyncRead (запрос HttpWebRequest, логический userRetrievedStream, логический probeRead) Существующий соединение было принудительно закрыто удаленным HostSystemInt32 Read (Byte [], Int32, Int32) в System.Net.Sockets.NetworkStream.Read (Byte [] буфер, смещение Int32, размер Int32)

Вот мой код, который подключается к веб-сервису:

using (SI.EmailVerificationSoapClient client = new EmailVerificationSoapClient())
        {

         var customBinding = new CustomBinding(client.Endpoint.Binding);
         var transportElement = customBinding.Elements
                      .Find<HttpTransportBindingElement>();
         transportElement.KeepAliveEnabled = false;

         client.Endpoint.Binding = customBinding;
         LicenseInfo authHeader = new LicenseInfo();

         RegisteredUser regUser = new RegisteredUser
           {
           UserID = ConfigurationHelper.GetValue("SIUsername"),
            Password = ConfigurationHelper.GetValue("SIPassword")
           };
         authHeader.RegisteredUser = regUser;
         SIWsOutputOfVerifyEmailRecord result;
         client.VerifyEmail(authHeader, email, 60, out result);
         bool hasSucceeded = 
    result.ServiceStatus.StatusNbr == 200 ||
     result.ServiceStatus.StatusNbr == 202 ||  
    result.ServiceStatus.StatusNbr == 203;
         client.Close();
         return hasSucceeded;
         }

Обратите внимание, что я установил Keep Alive в значение false, и я создаю и располагаю клиента при каждом вызове в соответствии с рекомендациями, которые я прочитал на других форумах относительно этой проблемы, и она все еще не работает.

Я добавил трассировщик и прочитал журнал трассировки, и там нет информации, он просто показывает ту же ошибку, которую я вставил выше. Я не смог найти веб-запрос в файле reference.cs, чтобы изменить его на keep-alive (это сервис wcf), и я получаю эту ошибку только на производстве и не мой локальный компьютер.

Есть ли что-нибудь еще, что я могу сделать?

...