2016-06-08 2 views
0

Ok. Поэтому я не знаю, что я делаю неправильно, но я пробовал несколько вещей. Здесь даже несколько сообщений об этой же проблеме, но похоже, что я просто не могу понять это правильно.Сервис не имеет привязки с сообщением №

У меня есть сайт, на котором работают службы отдыха, и все работает нормально, когда я использую обычный «http».

Итак, сегодня я был как «... эй, давайте включим 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. Я не знаю, это меня достает!

Может ли кто-нибудь помочь мне? Любая помощь будет оценена!

ответ

0

На самом деле я фактически изменил некоторые вещи. Но только в файле веб-конфигурации. Мой 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.

Смежные вопросы