使用UriTemplate的WebGet不会创建正确的端点

时间:2013-06-17 13:46:47

标签: c# wcf web-config

我可以访问我的WCF服务并获取其WSDL文件,但无法访问它的“子目录”。收到地址行中的URL时收到的错误如下。

  

[14:42:45.509]获取http://---.azurewebsites.net/MyService.svc/Ping [HTTP / 1.1 400错误请求105毫秒]

接口和实现如下。

[OperationContract]
[WebGet(UriTemplate="Ping")]
String Ping();

public String Ping() { return "Pong"; }

配置文件中的服务模型包含以下部分。

行为

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

绑定

<bindings>
  <basicHttpBinding>
    <binding name="PingBasicHttpBinding"/>
  </basicHttpBinding>
</bindings>

服务

<services>
  <service name="MyNamespace.MyService" 
           behaviorConfiguration="PingServiceBehavior">
    <endpoint name="PingEndpoint" 
              behaviorConfiguration="PingEndPointBehavior" 
              address="Ping" 
              bindingConfiguration="PingBasicHttpBinding" 
              contract="MyNamespace.IMyService"/>
  </service>
</services>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" 
                           multipleSiteBindingsEnabled="true"/>

我错过了什么?

1 个答案:

答案 0 :(得分:1)

我猜你无法输入网址并使用BasicHttpBinding从你的WCF服务获得回复。您应该使用webHttpBinding来完成上述工作