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



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

我已经确保命名空间是正确的,正如这里所讨论的。

第一个URL有效。其他的,不要。

http://--.azurewebsites.net/MyService.svc/
http://--.azurewebsites.net/MyService.svc/Ping
http://---.azurewebsites.net/MyService.svc/Ping/(此处建议)

behavior 中,我声明了两个行为——一个用于端点,一个用于服务。

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

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

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

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

最新更新