在浏览器中通过URL访问时未找到端点

时间:2013-06-18 09:28:05

标签: wcf web-config wcf-endpoint service-model

当我输入服务的地址时,我会看到WSDL文件。但是,当我向URL添加后缀时,我收到错误消息:“找不到端点”。这肯定是由于我的服务模型声明有问题,但几个小时后,我倾向于承认它超出了我的范围。

我确保名称空间正确如here所述。

第一个网址有效。另一个,不要。

  

http://---.azurewebsites.net/MyService.svc/
  http://---.azurewebsites.net/MyService.svc/Ping
  http://---.azurewebsites.net/MyService.svc/Ping/(按照建议here

行为中,我宣布了两种行为 - 一种用于终点,一种用于服务。

<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>

services 中我声明了两个端点(我只测试了第一个端点)。

<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 个答案:

答案 0 :(得分:1)

我已经解决了这个问题。显然,子目录的虚拟路径是累积的,因此暴露的服务一直存在,但位于以下地址。

  

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

一个ping级别来自配置文件,而另一个ping级别来自属性中的模板URI,用于装饰方法的接口。