Это может быть связано с тем, что привязка конечной точки службы не использует протокол HTTP. - PullRequest
80 голосов
/ 03 мая 2011

У меня нормально работает служба WCF на моей локальной машине.Я поместил его на серверы и получил следующую ошибку:

Произошла ошибка при получении ответа HTTP на http://xx.xx.x.xx:8200/Services/WCFClient.svc. Это может быть связано с тем, что привязка конечной точки службы не используетсяпротокол HTTP.Это также может быть связано с тем, что сервер прерывает контекст HTTP-запроса (возможно, из-за закрытия службы).Более подробную информацию смотрите в журналах сервера.]

Я зашел на службу в URL-адресе, и она работает правильно.Все, что я делаю для функции - это возвращаю строку имени изображения, поэтому передаваемых данных не так уж много.Я проследил журнал, и он дает мне ту же информацию.Вот моя конфигурация клиента:

<binding name="basicHttpBinding_IWCFClient" closeTimeout="00:01:00"
         openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
         bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
         maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
         messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
         allowCookies="false">
    <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>
<endpoint name="basicHttpBinding_IWCFClient" 
    address="http://localhost:4295/Services/WCFClient.svc"
    binding="basicHttpBinding" 
    bindingConfiguration="basicHttpBinding_IWCFClient" 
    behaviorConfiguration="WCFGraphicManagementTool.Services.ClientBehavior"
    contract="WCFClient.IWCFClient" />

Вот моя конфигурация сервера:

<service behaviorConfiguration="WCFGraphicManagementTool.Services.WCFClientBehavior"
    name="WCFGraphicManagementTool.Services.WCFClient">
   <endpoint name="basicHttpBinding_IWCFClient"
       address="" 
       binding="basicHttpBinding" 
       contract="WCFGraphicManagementTool.Contracts.IWCFClient" />
   <endpoint 
       address="mex" 
       binding="mexHttpBinding" 
       contract="IMetadataExchange" />
</service>
<behavior name="WCFGraphicManagementTool.Services.WCFClientBehavior">
   <dataContractSerializer maxItemsInObjectGraph="2147483647" />
   <serviceThrottling maxConcurrentCalls="120" maxConcurrentSessions="120"
                      maxConcurrentInstances="120" />
   <serviceMetadata httpGetEnabled="true" />
   <serviceDebug includeExceptionDetailInFaults="true" />
</behavior>

Это будет настройка на сервере, так как он работает на моей локальной машине?

Ответы [ 21 ]

1 голос
/ 10 сентября 2015

Дополнительные сведения об этой проблеме см. Также: Существующее соединение было принудительно закрыто удаленным хостом - WCF

В результате моя проблема заключалась в том, что мои объекты передачи данных были слишком сложными,Начните с простых свойств, таких как public long Id { get; set; }, и как только вы это заработаете, начните добавлять дополнительные материалы по мере необходимости.

1 голос
/ 16 мая 2011

Я разобрался в проблеме. В итоге путь к моему файлу конфигурации был неверным. Ошибки для WCF иногда очень полезны.

1 голос
/ 06 июля 2015

Я думаю, что лучший способ решить эту проблему - следовать советам по ошибкам, следовательно, искать журналы сервера. Для включения логов я добавил

 <system.diagnostics>
    <sources>
      <source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true">
        <listeners>
          <add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData="c:\logs\TracesServ_ce.svclog" />
        </listeners>
      </source>
    </sources>
  </system.diagnostics>

Затем перейдите в c: \ logs \ TracesServ_ce.svclog, откройте его с помощью Microsoft сервис просмотра трассировки. И посмотрите, в чем проблема на самом деле.

1 голос
/ 09 декабря 2014

Моя проблема была в том, что слишком много элементов передавалось между клиентом и сервером.Мне пришлось изменить эти настройки в поведении с обеих сторон.

<dataContractSerializer maxItemsInObjectGraph="2147483646"/>
0 голосов
/ 10 октября 2016

Для меня решения этой ошибки очень странные.Это была проблема адреса порта EndpointAddress .В Visual Studio адрес порта вашего файла (например, Service1.svc) и адрес порта вашего проекта wcf должны совпадать с указанным в EndpointAddress .Позвольте мне подробно описать это решение.

Существует два шага для проверки адресов портов.

  1. В вашем проекте WCF щелкните правой кнопкой мыши файл службы (например, Service1)..svc) -> чем выбрать Просмотр в браузере Теперь в вашем браузере есть URL-адрес, подобный http://localhost:61122/Service1.svc, поэтому теперь запишите свой адрес порта как 61122

  2. Щелкните правой кнопкой мыши свой проект wcf -> затем выберите Свойства -> перейдите на Веб-вкладку -> Теперь в разделе Серверы -> выберите Используйте Visual Studio Development Server -> выберите Определенный порт и укажите адрес порта, который мы ранее нашли в нашей службе Service1.svc.То есть (61122) .

Ранее у меня был другой адрес порта.После правильного указания адреса порта, который я указал в EndpointAddress , моя проблема была решена.

Надеюсь, это может решить вашу проблему.

0 голосов
/ 14 сентября 2016

Также имелась проблема, и это было из-за того, что я забыл украсить мою модель атрибутами DataContract и DataMember

0 голосов
/ 23 июня 2016

в моем случае

мой сервис имеет функцию download Files

, и эта ошибка появляется только при попытке загрузить Big Files

поэтому я нашел этот ответ , чтобы увеличить maxRequestLength до необходимого значения в web.config

Я знаю, что это странно, но проблема решена

, если вы не сделаетелюбые операции загрузки или скачивания, возможно, этот ответ вам не поможет

0 голосов
/ 10 сентября 2015

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

Проблема заключалась в том, чтопул приложений был настроен с ограничением памяти, и он просто перезапускается через переменный промежуток времени.

Надеюсь, это поможет кому-то еще!
Привет,

0 голосов
/ 08 марта 2015

Это может не относиться к вашей конкретной проблеме, но упомянутое вами сообщение об ошибке имеет много причин, одна из которых использует тип возврата для [OperationContract], который является либо абстрактным, либо интерфейсом, либо неизвестным клиенту WCF. код.

Проверьте сообщение (и решение) ниже

https://stackoverflow.com/a/5310951/74138

0 голосов
/ 17 января 2013
...