Конечная точка не найдена при доступе через 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 ответ
Я решил проблему. По-видимому, виртуальный путь к подкаталогам является кумулятивным, поэтому открытая служба была там все время, но по следующему адресу.
Один уровень проверки связи поступает из файла конфигурации, а другой - из URI шаблона в атрибуте, который украшает интерфейс метода.