Net Core WCF error «Произошла одна или несколько ошибок. (Не было прослушивания конечной точки на» - PullRequest
0 голосов
/ 25 февраля 2020

Я звоню на внешнюю soap услугу. В разработке он работает нормально, но публикация его на сервере выдает указанную ошибку.

"Произошла одна или несколько ошибок. (Конечная точка не прослушивала, когда https://myservice мог принять сообщение. Это часто вызывается неверным адресом или действием SOAP. Подробнее см. InnerException, если он есть.) "

Если я обновлю sh страницу, ошибка изменится:

Произошло необработанное исключение при обработке запроса. AggregateException: произошла одна или несколько ошибок. (Объект доступен только для чтения.) System.Threading.Tasks.Task.GetResultCore (bool waitCompletionNotification)

InvalidOperationException: Объект доступен только для чтения. System.ServiceModel.Security.X509CertificateRecipientClientCredential.ThrowIfImmutable ()

Это код:

            PortTypeClient.ClientCredentials.ServiceCertificate.SslCertificateAuthentication= new X509ServiceCertificateAuthentication()
            {
                CertificateValidationMode = X509CertificateValidationMode.None,
                RevocationMode = X509RevocationMode.NoCheck
            };

1 Ответ

0 голосов
/ 26 февраля 2020

В соответствии с сообщением об ошибке "One or more errors occurred. (There was no endpoint listening at that https://myservice could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.)" кажется, что вы не определяете привязку в конфигурации своей службы, поэтому вы получаете значения по умолчанию для wsHttpBinding, а значением по умолчанию для securityMode \ transport для этой привязки является Message.

Вы должны открыть «Web.config» в каталоге приложения и добавить следующий код конфигурации в файл. Во время выполнения инфраструктура WCF использует эту информацию для создания конечной точки, с которой клиентские приложения могут взаимодействовать.

Config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service name="Microsoft.ServiceModel.Samples.CalculatorService">

        <!-- This endpoint is exposed at the base address provided by host: http://localhost/servicemodelsamples/service.svc -->
        <endpoint address=""
                  binding="wsHttpBinding"
                  contract="Microsoft.ServiceModel.Samples.ICalculator" />

        <!-- The mex endpoint is explosed at http://localhost/servicemodelsamples/service.svc/mex -->
        <endpoint address="mex"
                  binding="mexHttpBinding"
                  contract="IMetadataExchange" />
      </service>
    </services>
  </system.serviceModel>

</configuration>

Подробнее о том, как разместить приложение wcf в IIS, Вы могли бы обратиться к этой статье .

...