Loadrunner WebServices Ошибка подключения к сокету прервана

Я запускаю службу WCF на основе nettcp, используя LR VuGen 12.02 и протокол веб-служб, импортируя WSDL службы.

После составления запроса и попытки его отправки я получаю следующую ошибку. который на самом деле отлично работает с клиентом WPF, но не работает с LR VuGen Script

    Action.c(16): Error:The socket connection was aborted. This could be caused by an error processing your message or a receive timeout being exceeded by the remote host, or an underlying network resource issue. Local socket timeout was '00:59:59.9949990'. 
Error: An existing connection was forcibly closed by the remote host 

Server stack trace: 
   at System.ServiceModel.Channels.SocketConnection.ReadCore(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, Boolean closing)
   at System.ServiceModel.Channels.SocketConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
   at System.ServiceModel.Channels.DelegatingConnection.Read(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout)
   at System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.SendPreamble(IConnection connection, ArraySegment`1 preamble, TimeoutHelper& timeoutHelper)
   at System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.DuplexConnectionPoolHelper.AcceptPooledConnection(IConnection connection, TimeoutHelper& timeoutHelper)
   at System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection(TimeSpan timeout)
   at System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call(ServiceChannel channel, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce(TimeSpan timeout, CallOnceManager cascade)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   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 HP.WcfRouter.IUniversalContract.Send(Message message)
   at HP.WcfRouter.WcfRouter.DoRequestInternal(Boolean isOneWay, Dictionary`2 context)
Action.c(16): Error:InvokeMethod failure: External component has thrown an exception..
Action.c(16): Error:ExtractResultArg failure: Object reference not set to an instance of an object..
Action.c(16): Error:Web service call "GetTopicsByUserID" execution failed

Я испробовал множество релевантных предложений, но безуспешно. Для справки: Increasing Timeouts and maxItemsInObjectGraph и многие другие подобные сообщения на StackOverflow, такие как Socket Connection Публикация Aborted-StackOverflow

Любая помощь приветствуется.


person Murali Krishna Chaturvedi    schedule 15.09.2015    source источник


Ответы (1)


Веб-службы будут работать только для привязки HTTP, а не для привязки NetTCP. Для привязки NetTCP лучше всего использовать виртуального пользователя в Visual Studio. Используйте исходный код клиента для создания оболочки для передачи вашего запроса. У вас по-прежнему будет доступ к механизму параметризации и настройкам времени выполнения из Visual Studio.

person James Pulley    schedule 16.09.2015
comment
Привет @James, Большое спасибо за ваш быстрый ответ. Но я немного запутался здесь с этим ответом. Поскольку у нас есть настройки в LR>Управление службами>Протокол и безопасность>Редактировать данные>Пользовательские привязки WCF>Transport=TCP. Разве этот параметр не отправляет запрос веб-службы через TCP вместо HTTP, и этот TCP совпадает с net.TCP, который Microsoft настроила, добавив WCF .net TCP? Поправьте меня, если я где-то ошибаюсь :) - person Murali Krishna Chaturvedi; 16.09.2015
comment
Привязка NetTCP предназначена для служб Windows. Привязка HTTP предназначена для веб-служб. Если вы используете NetTCP, ваш путь лежит через виртуального пользователя Visual Studio для создания нагрузки. Насколько я понимаю, нет пути через веб-службы или веб-службы для обработки привязки NetTCP. Если вы хотите опубликовать службы через HTTP, существует путь для тестирования с использованием интерфейса HTTP. И это путь, по которому я пошел с клиентом всего две недели назад. - person James Pulley; 16.09.2015
comment
Теперь мне немного понятнее. Еще раз спасибо. :) Приложение, над которым я работаю, представляет собой приложение WPF с одной веб-службой (HTTP) и одной службой Windows WCF (через nettcp с открытым WSDL), и мне нужно генерировать нагрузку и нагружать их обоих. Я легко могу генерировать нагрузку на веб-службы на основе HTTP, но другая служба на основе nettcp является проблематичной. Сначала я пытался написать класс-оболочку C++ для DLL службы C# и загрузить их с помощью lr_load_dll, но это оказалось слишком сложным, и я застрял здесь. Пожалуйста, предложите любые альтернативы. - person Murali Krishna Chaturvedi; 16.09.2015
comment
Взгляните на надстройки Visual Studio, чтобы взять код из вашей DLL и поместить его в реального виртуального пользователя. Это работает и является проверенным решением, начиная с версии LoadRunner 5. - person James Pulley; 17.09.2015
comment
Еще раз привет @James .. извините за задержку с ответом, но я использую Visual Studio 2015, с помощью которой наше приложение также создается для целевой .net 4.5.2. Надстройки для Load Runner несовместимы с VS2015 и поддерживают только VS 2012. Возможно, HP не обновляла их. Я провел глубокий анализ службы, с которой я пытаюсь работать, и узнал от разработчиков, что они используют nettcp с обратными вызовами с активным флагом HTTPGetEnabled, благодаря которому я могу просматривать служба в IE/Chrome, но пользовательский интерфейс SOAP не может идентифицировать операции импорта WSDL внутри него - person Murali Krishna Chaturvedi; 29.09.2015
comment
Тогда у вас есть только два пути: обратиться к HP за расширениями 2015 или поручить разработчикам использовать Visual Studio Ultimate Edition с тестовой средой для проведения нагрузочного теста для элементов привязки NetTCP. - person James Pulley; 29.09.2015