WCF через SSL вопрос - PullRequest
       0

WCF через SSL вопрос

3 голосов
/ 04 октября 2011

У меня есть веб-сервис WCF в IIS 6, и я пытаюсь заставить его работать по SSL.Когда я звоню в службу, я получаю следующую ошибку:

Сообщение не может быть обработано.Это наиболее вероятно, потому что действие 'http://tempuri.org/IARPolicyComposer/GetTemplatesList' является неправильным или потому что сообщение содержит недопустимый или просроченный токен контекста безопасности или из-за несоответствия между привязками.Маркер контекста безопасности будет недействительным, если служба прервет канал из-за неактивности.Чтобы предотвратить прерывание бездействующими сеансами службы, преждевременно увеличьте время ожидания получения для привязки конечной точки службы.

Вот конфигурация службы:

<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
<bindings>
  <wsHttpBinding>
    <binding name="WSHttpBinding_IARPolicyComposer">
      <security mode="Transport">
      </security>
    </binding>
  </wsHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="PolicyComposer.ARPolicyComposerBehavior" name="PolicyComposer.ARPolicyComposer">
            <endpoint address="" binding="wsHttpBinding" contract="PolicyComposer.IARPolicyComposer">
            </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services> 
<behaviors>
<serviceBehaviors>
<behavior name="PolicyComposer.ARPolicyComposerBehavior">
    <serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
<behavior name="">
 <serviceMetadata httpGetEnabled="true" />
 <serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>

config:

  <wsHttpBinding>
    <binding name="WSHttpBinding_IARPolicyComposer" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
      <security mode="Transport">
      </security>
    </binding>
  </wsHttpBinding>

И служба, и клиент находятся в одном домене.

1 Ответ

3 голосов
/ 04 октября 2011

У вас есть

<serviceMetadata httpGetEnabled="true" /> 

Разве это не должно быть

<serviceMetadata httpsGetEnabled="true" />

Mind the s in httpsGetEnabled ...

И если вы спросите меня, эту часть можно удалить, поскольку она не используется конечной точкой ...

<behavior name="">  
  <serviceMetadata httpGetEnabled="true" />  
  <serviceDebug includeExceptionDetailInFaults="false" /> 
</behavior>

Как насчет изменения мекс-привязки на

binding="mexHttpsBinding"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...