Ошибка службы WCF при получении ответа HTTP - PullRequest
0 голосов
/ 11 апреля 2020

Ошибка при получении ответа HTTP из-за привязки конечной точки службы, не использующей протокол HTTP. Это также может быть связано с прерыванием контекста HTTP-запроса сервером. Невозможно прочитать данные из транспортного соединения. Существующее соединение было принудительно закрыто удаленным хостом

WEB Client Config

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="basicHttpBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
                <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
                <security mode="None">
                    <transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
                    <message clientCredentialType="UserName" algorithmSuite="Default"/>
                </security>
            </binding>
        </basicHttpBinding>         
    </bindings>
    <endpoint address="http://WCFService:8086/WCFBase" binding="basicHttpBinding" bindingConfiguration="basicHttpBinding" contract="WCFBase.IWCFBase" name="basicHttpBinding"/>
    <endpoint address="http://WCFService:8087/WCFExtra" binding="basicHttpBinding" bindingConfiguration="basicHttpBinding" contract="WCFExtra.IWCFEXTRA" name="basicHttpBinding"/>
</system.serviceModel>

WCF Service Config

<system.serviceModel>
    <extensions>
      <behaviorExtensions>
        <add name="wsdlExtensions" type="WCFExtras.Wsdl.WsdlExtensionsConfig, WCFExtras, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      </behaviorExtensions>
    </extensions>
    <bindings>
      <basicHttpBinding>
        <binding name="basicHttpBinding" transferMode="Streamed" />        
      </basicHttpBinding>     
    </bindings>
    <services>      
      <service behaviorConfiguration="WCFService.Web.Behavior" name="WCFService.Web.Service.WCFBase">
        <endpoint address="" binding="basicHttpBinding" name="basicHttpBinding" contract="WCFService.Web.Service.IWCFBase" behaviorConfiguration="WsdlSampleEndpointBehavior" />
        <host>
          <baseAddresses>
            <add baseAddress="http://WCFService:8086/WCFBase" />
          </baseAddresses>
        </host>
      </service>
      <service behaviorConfiguration="WCFService.Web.Behavior" name="WCFService.Web.Extra.WCFExtra">
        <endpoint address="" binding="basicHttpBinding" name="basicHttpBinding" contract="WCFService.Web.Extra.IWCFExtra" behaviorConfiguration="WsdlSampleEndpointBehavior" />
        <host>
          <baseAddresses>
            <add baseAddress="http://WCFService:8087/WCFExtra" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="WsdlSampleEndpointBehavior">
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="WCFService.Web.Behavior">
          <serviceMetadata httpGetEnabled="true" />
          <dataContractSerializer maxItemsInObjectGraph="2147483647" />
          <serviceThrottling maxConcurrentCalls="3000"     
              maxConcurrentSessions="3000" maxConcurrentInstances="3000"/>
          <serviceDebug includeExceptionDetailInFaults="True" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

Ошибка в сети client

http://webclient/Common/Login.aspx | System.ServiceModel.CommunicationException : Произошла ошибка при получении ответа HTTP на http://wcfservice: 8086 / WCFBase . Это может быть связано с тем, что привязка конечной точки службы не использует протокол HTTP. Это также может быть связано с тем, что сервер прерывает контекст HTTP-запроса (возможно, из-за закрытия службы). Смотрите журналы сервера для более подробной информации. ---> System. Net .WebException: базовое соединение было закрыто: при получении произошла непредвиденная ошибка. ---> System.IO.IOException: невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом. ---> System. Net .Sockets.SocketException: существующее соединение было принудительно закрыто удаленным хостом в System. Net .Sockets.Socket.Receive (буфер Byte [], смещение Int32, размер Int32, SocketFlags socketFlags ) в System. Net .Sockets.NetworkStream.Read (буфер в байтах [], смещение Int32, размер Int32) --- конец трассировки стека внутренних исключений --- в System. Net .Sockets.NetworkStream.Read ( Байт [], смещение Int32, размер Int32) в System. Net .PooledStream.Read (буфер Byte [], смещение Int32, размер Int32) в System. Net .Connection.SyncRead (запрос HttpWebRequest, логический userRetrievedStream, Boolean probeRead) --- Конец внутренней трассировки стека исключений --- в System. Net .HttpWebRequest.GetResponse () в System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply --- Время окончания (TimeSpan) внутренняя трассировка стека исключений ---

Server stack trace: 
   at System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException, HttpWebRequest request, HttpAbortReason abortReason)
   at System.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 WCFBase.IWCFBase.PerformUserLogin(UserLoginVO aUserLoginVO)
   at WCFBase.WCFBaseClient.PerformUserLogin(UserLoginVO aUserLoginVO) in c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\WebClient\ec042b76\af1d169c\App_WebReferences.39m1idzl.0.cs:line 36589
   at Web.Client.Common_Login.pLogin(Boolean aIsFroceLogin) in d:\webclient\Common\Login.aspx.cs:line 178

1 Ответ

0 голосов
/ 14 апреля 2020

По умолчанию проект WCF не поддерживает несколько сервисных контрактов. Как вы размещаете службу WCF с несколькими контрактами на обслуживание?
Что-то не так с конфигурацией клиента. Конфигурация клиента генерируется автоматически с помощью инструмента Adding Service Reference? Пожалуйста, убедитесь, что служба работает должным образом, прежде чем позвонить.
enter image description here
Не стесняйтесь, дайте мне знать, если проблема все еще существует.

...