2010-04-16 12 views
6

Tengo un servicio WCF actualmente implementado con basicHttpBindings y SSL habilitado. Pero ahora tengo que activar las sesiones de WCF (no sesiones ASP), así que moví servicio a wsHttpBidnings pero las sesiones no están habilitadascómo habilitar la sesión de WCF con wsHttpBidning con solo transporte Seguridad

he puesto

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] 

Pero cuando me puse

SessionMode=SessionMode.Required 

en contrato de servicio dice

El contrato requiere Sesión, pero Encuadernación 'WSHttpBindin g 'no lo admite o no está configurado correctamente para admitir .

siguiente es la definición de wsHttpBinding

<wsHttpBinding> 
    <binding name="wsHttpBinding"> 
     <readerQuotas maxStringContentLength="10240" /> 
     <reliableSession enabled="false" /> 
     <security mode="Transport"> 
     <transport clientCredentialType="None"> 
      <extendedProtectionPolicy policyEnforcement="Never" /> 
     </transport> 
     </security> 
    </binding> 
    </wsHttpBinding> 

favor me ayude con este

Respuesta

7

Si desea "sesiones" con wsHttpBinding, usted tiene que utilizar la mensajería fiable, o las sesiones de seguridad.

Para habilitar las sesiones en wsHttpBinding, necesita mensajería confiable, y para eso, necesita cambiar la configuración para una sesión confiable (la etiqueta que se parece a esta <reliableSession/>) para que su nueva configuración se vea así:

<wsHttpBinding> 
    <binding name="wsHttpBinding"> 
     <readerQuotas maxStringContentLength="10240" /> 
     <reliableSession enabled="true" /> 
     <security mode="Transport"> 
     <transport clientCredentialType="None"> 
      <extendedProtectionPolicy policyEnforcement="Never" /> 
     </transport> 
     </security> 
    </binding> 
    </wsHttpBinding> 
+0

He intentado esto antes, pero arroja una excepción que dice "No se encontró ninguna dirección base con el esquema http bla bla y reliableSessions no son compatibles con el esquema https bla bla" –

+0

Te dejaré después de intentarlo en otro momento. gracias –

+0

¿Qué puedo hacer si quiero usar sesiones pero no puedo hacer lo que sugirió ya que mi cliente es AJAX? ya que AJAX no es compatible con el contexto de seguridad. –

-1

así hacer <security mode="None"> entonces el "https espera en lugar de error HTTP será fijo.

-1

ir a su anfitrión IIS y haga clic derecho en su aplicación y elija MangeApplication y Configuración avanzada y en Protocolos habilitados añadir" wsHttpBinding ".

Cuestiones relacionadas