WCF REST WebInvoke UriTemplate& https问题

时间:2011-10-25 20:24:00

标签: .net wcf rest webinvoke

我的WCF服务使用WebInvoke属性并使用httpGetEnabled。

[OperationContract]
[WebInvoke(Method="POST", UriTemplate = "/Function1")]
void Function1(Stream input);

[OperationContract]
[WebInvoke(Method="POST", UriTemplate = "/Function2")]
void Function2( Stream input );

当我尝试使用https时,我无法访问UriTemplates。但是,我可以访问svc和wsdl。

<services>
  <service behaviorConfiguration="SslBehavior" name="MyService">
    <endpoint address="" binding="webHttpBinding" contract="IMyService" behaviorConfiguration="WebBehavior" />
  </service>
</services>

<behaviors>
  <serviceBehaviors>
    <behavior name="SslBehavior">
      <serviceMetadata httpsGetEnabled="True" />
      <serviceDebug includeExceptionDetailInFaults="True"/>
    </behavior>
  </serviceBehaviors>

  <endpointBehaviors>
    <behavior name="WebBehavior">
      <webHttp />
    </behavior>
  </endpointBehaviors>
</behaviors>

此服务托管在IIS 7中。是否有一些我遗漏的明显内容?我尝试了尽可能多的配置组合。当我尝试发布到其中一个WebInvoke链接时,我收到404错误。

另一家公司将发布此服务,这就是为什么它必须是RESTfull

修改

我在绑定节点中尝试了这个:

  <webHttpBinding>
    <binding name="SslBinding" transferMode="Streamed">
      <security mode="None">
        <transport clientCredentialType="None" />
      </security>
    </binding>
  </webHttpBinding>

并在端点上设置BindingConfiguration。同样的问题:(

1 个答案:

答案 0 :(得分:3)

尝试将安全模式设置为传输:

<bindings>
  <webHttpBinding>
    <binding name="SslBinding" transferMode="Streamed">
      <security mode="Transport">  
        <transport clientCredentialType="None" />     
    </security>     
  </binding>   
</webHttpBinding>