服务没有与无消息版本的绑定

时间:2016-06-08 20:40:52

标签: asp.net wcf

确定。所以我不知道自己做错了什么,但我尝试了一些事情。这里甚至有一些关于同样问题的帖子,但似乎我无法做到这一点。

我有一个正在运行休息服务的网站,当我使用普通" http"时,一切正常。

所以今天我就像#34; ...嘿,让我们启用SSL,因为我们将不得不在以后运行带有SSL的网站......",这就是我做了: - 单击项目,然后按F4(打开属性)和 - >

enter image description here

大。当我运行wesbite时:

enter image description here

这就是我的serviceModel的样子:

<system.serviceModel>
    <!--<services>
      <service name="Stolen.Service">
        <endpoint address=""
                  binding="basicHttpBinding"
                  bindingConfiguration="secureHttpBinding"
                  contract="Stolen.IService"/>
        <endpoint address="mex"
                  binding="mexHttpsBinding"
                  contract="IMetadataExchange" />
      </service>
    </services>-->
    <bindings>
      <basicHttpBinding>
        <binding name="secureHttpBinding">
          <security mode="Transport">
            <transport clientCredentialType="None"/>
          </security>
        </binding>
      </basicHttpBinding>
      <webHttpBinding>
        <binding>
          <security mode="Transport" />
        </binding>
      </webHttpBinding>
    </bindings>
    <services>
      <service name="Stolen.Service">
        <endpoint address="rest"
                  binding="basicHttpBinding"
                  bindingConfiguration="secureHttpBinding"
                  behaviorConfiguration="RestfulBehavior"
                  contract="Stolen.IService"/>
        <!--<endpoint address=""
                  binding="webHttpBinding"
                  behaviorConfiguration="RestfulBehavior"
                  contract="Stolen.IService"/>-->
        <!--<endpoint address="mex"
                   binding="mexHttpsBinding"
                   contract="IMetadataExchange" />-->
        <!--<endpoint address="soap" 
                  binding="basicHttpBinding" 
                  behaviorConfiguration="SOAPBehavior"
                  contract="Stolen.IService" />-->
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="RestfulBehavior">
          <!--<enableWebScript/>-->
          <webHttp/>
        </behavior>
        <!--<behavior name="SOAPBehavior">

        </behavior>-->
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

我有一项服务:

[OperationContract]
[WebInvoke(Method = "POST",
    UriTemplate = "IncrementWebsiteVisitCount",
    RequestFormat = WebMessageFormat.Json,
    ResponseFormat = WebMessageFormat.Json,
    BodyStyle = WebMessageBodyStyle.WrappedRequest)]
string IncrementWebsiteVisitCount();

有些帖子建议

<webHttp/>

被删除。有些人还建议这是因为我为SOAP和REST端点配置了一个endpointBehavior。我不知道,这个得到了我!

任何人都可以帮助我吗?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

我实际上最终改变了一些事情。 但只能在Web配置文件中。 我的serviceModel现在看起来像这样:

  <system.serviceModel>
    <bindings>
      <!-- As far as I know, webHttpBinding means it is a REST service -->
      <webHttpBinding>
        <binding name="secureHttpBinding">
          <security mode="Transport">
            <transport clientCredentialType="None"/>
          </security>
        </binding>
      </webHttpBinding>
    </bindings>
    <behaviors>
      <endpointBehaviors>
        <behavior name="web">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpsGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    <services>
      <service name="Stolen.Service">
        <host>
          <baseAddresses>
            <add baseAddress="https://localhost:44300/Service.svc/" />
          </baseAddresses>
        </host>
        <endpoint address=""
                  behaviorConfiguration="web"
                  binding="webHttpBinding"
                  bindingConfiguration="secureHttpBinding"
                  contract="Stolen.IService" />
        <endpoint address="mex"
                  binding="mexHttpsBinding"
                  contract="IMetadataExchange" />
      </service>
    </services>
  </system.serviceModel>

有了这个,现在一切都工作正常,使用SSL。