Не было прослушивания конечной точки и ошибка 404 - PullRequest
3 голосов
/ 30 августа 2011

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

"There was no endpoint listening at <a href="http://www.ourproductionserver.com/ClientService.svc/mex" rel="nofollow">http://www.ourproductionserver.com/ClientService.svc/mex</a> that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details."

При поиске InnerException возвращается файл 404, не найденный ...

Странная часть, это то, что если мы копируем / пропускаем тот же самый URL-адрес, что и в приведенной ниже ошибке (http://www.ourproductionserver.com/ClientService.svc) в IE или FireFox, он показывает правильно. Heum, что мы делаем неправильно ?

Мы также попробовали это на локальном сервере, и все работает отлично.

Кто-нибудь уже получил что-то подобное и как это решить?

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

Наша веб-конфигурация:

<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
<bindings>
  <webHttpBinding>
    <binding name="WebBinding"></binding>
  </webHttpBinding>
</bindings>
<services>
  <service name="ourLib.ServiceImplementations.ClientActionService" behaviorConfiguration="ServiceBehavior">
    <endpoint name="WebEndpoint" behaviorConfiguration="EndpointBehavior" address="" binding="webHttpBinding"
              contract="ourLib.ServiceContracts.IClientActionService">
    </endpoint>
    <endpoint contract="ourLib.ServiceContracts.IClientActionService" address="mex" binding="mexHttpBinding"></endpoint>
  </service>
<system.serviceModel>

Наш ClientService.svc

 <%@ ServiceHost Language="C#" Debug="true" Service="ourLib.ServiceImplementations.ClientActionService" %>

UPDATE Мы обнаруживаем, что интернет-провайдер настроен на средний уровень доверия, когда мы настроены на Полное доверие. Может ли это что-то изменить? Если да, то как мы можем изменить его, кроме web.config (который мы уже пробовали).

Ответы [ 3 ]

2 голосов
/ 30 августа 2011

Что такое "/ mex"?Это функция в вашем классе обслуживания?Я только что проверил на своем собственном Webservice.svc и не смог сделать / я не уверен, что вы действительно можете это сделать ...

Если вы пытаетесь заставить клиента подключиться к вашему сервису, вы должны иметь возможность просто использовать URL-адрес .svc и затем вызывать функцию для сгенерированного клиентом объекта .NET.

0 голосов
/ 02 сентября 2011

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

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

0 голосов
/ 30 августа 2011

Похоже, вы пытаетесь вызвать конечную точку обмена метаданными (mex), которая используется только при генерации метаданных (WSDL). Я бы посоветовал проверить, где вы устанавливаете URL службы, и убедиться, что у вас нет mex части на конце.

...