Конечная точка не найдена при доступе через URL в браузере

Когда я ввожу адрес моей службы, я вижу файл WSDL. Однако, когда я добавляю суффикс к URL, я получаю сообщение об ошибке: "конечная точка не найдена". Это определенно связано с тем, что что-то не так с моей декларацией модели сервиса, но через несколько часов я склонен признать, что это вне меня.

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

Первый URL работает. Другой нет.

http://---.azurewebsites.net/MyService.svc/
http://---.azurewebsites.net/MyService.svc/Ping
http://---.azurewebsites.net/MyService.svc/Ping/ (как предлагается здесь)

В поведении я объявил два поведения - одно для конечной точки и одно для службы.

<behaviors>
  <endpointBehaviors>
    <behavior name="PingEndPointBehavior">
      <webHttp/>
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name ="PingServiceBehavior">
      <serviceMetadata httpGetEnabled="true"
                       httpsGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="true"/>
    </behavior>
    <behavior name="">
      <serviceMetadata httpGetEnabled="true"
                       httpsGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
</behaviors>

Я объявил следующую привязку для доступа через строку URL в браузере.

<bindings>
  <webHttpBinding></webHttpBinding>
</bindings>

В сервисах я объявил две конечные точки (я тестировал только с первой).

<service name="MyProject.MyService"
         behaviorConfiguration="PingServiceBehavior">
  <endpoint name="PingEndPoint"
            behaviorConfiguration="PingEndPointBehavior"
            address="Ping"
            binding="webHttpBinding"
            contract="MyProject.IMyService"/>
  <endpoint contract="IMetadataExchange" 
            binding="mexHttpBinding" 
            address="mex" />
</service>

У меня также есть следующее в моем конфигурационном файле. Сомнительно его значение, но никто не знает.

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
                           multipleSiteBindingsEnabled="true"/>

1 ответ

Решение

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

http://---.azurewebsites.net/MyService.svc/Ping/Ping

Один уровень проверки связи поступает из файла конфигурации, а другой - из URI шаблона в атрибуте, который украшает интерфейс метода.

Другие вопросы по тегам