Ошибка конфигурации сеанса WCF

Я хочу включить (SessionMode = SessionMode.Required) в своей службе, поэтому, когда я включил ее, затем протестируйте службу с помощью WCF Client Test, она вызовет следующую ошибку:

Сообщение не может быть обработано. Скорее всего, это связано с тем, что действие "http://schemas.xmlsoap.org/ws/2004/09/transfer/Get 'неверно, или потому, что сообщение содержит недопустимый или просроченный токен контекста безопасности, или из-за несоответствия между привязками. Маркер контекста безопасности был бы недействительным, если бы служба прервала канал из-за бездействия. Чтобы предотвратить преждевременное прерывание сеансов ожидания службой, увеличьте тайм-аут приема для привязки конечной точки службы.

URI: http://localhost:7645/PublisherService.svc    

Документ HTML не содержит информации об обнаружении веб-служб.

<system.serviceModel>

    <bindings>
        <basicHttpBinding>
            <binding name="myBasicBinding"  maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" closeTimeout="00:01:00" openTimeout="00:01:00" sendTimeout="00:01:00" receiveTimeout="00:01:00">
                <readerQuotas maxDepth="128" maxStringContentLength="8388608" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="2147483647"/>
            </binding>

        </basicHttpBinding>

   <!--enable WSHTTPBinding session-->
  <wsHttpBinding>
    <binding name="bindingAction" transactionFlow="false" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"  sendTimeout="00:01:00"   receiveTimeout="00:01:00" closeTimeout="00:01:00" openTimeout="00:01:00">
      <readerQuotas maxDepth="128" maxStringContentLength="8388608" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="2147483647"/>
      <reliableSession enabled="true"/>
      <security mode="Transport">
        <message establishSecurityContext="false" clientCredentialType="IssuedToken"/>
      </security>  
    </binding>
  </wsHttpBinding>

</bindings>

 <protocolMapping>
  <add scheme="http" binding="wsHttpBinding"/>
</protocolMapping>
<!-- \\\\\\\\\\\\\\\\\\\\\\\\\\\ -->
<services>
  <service name="AllChatService.PublisherService"  behaviorConfiguration="metadataSupport">    
    <host>
      <baseAddresses>
        <add baseAddress ="http://localhost:7645/"/>
      </baseAddresses>
    </host>
    <endpoint contract="AllChatService.PublisherService" binding="wsHttpBinding" address=""/>
    <!--Enable Meta Data Publishing-->
    <endpoint address="mex"  binding="mexHttpBinding"  contract="IMetadataExchange"/>
  </service>
</services>

 <behaviors>
    <serviceBehaviors>
    <behavior name="metadataSupport">
      <serviceDebug includeExceptionDetailInFaults="False" />

   <!--Enable WSDL Data Binding-->
      <serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
    </behavior>
  </serviceBehaviors>


    </behaviors>

<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
</system.serviceModel>




[ServiceBehaviorAttribute(InstanceContextMode = InstanceContextMode.PerCall)]
public class PublisherService : IPublisher
{
}

[ServiceContract(SessionMode = SessionMode.Required)]
public interface IPublisher
{
}

Так может ли кто-нибудь помочь мне решить эту проблему.


person user2431952    schedule 19.06.2013    source источник


Ответы (1)


удалить линию

<security mode="Transport">

из вашего файла web.config. потому что Транспорт, похоже, требует HTTPS для шифрования учетных данных.

person Rayhan.iit.du    schedule 19.06.2013
comment
но мне не нужно шифровать учетные данные, просто я хочу запустить службу. - person user2431952; 19.06.2013
comment
‹SessionState timeout = количество времени в secend /› добавьте эту строку в свой web.config - person Rayhan.iit.du; 20.06.2013