Hola tengo un servicio de wcf simple como este, con un método de prueba que simplemente duerme durante 20 segundos y devuelve un valor. Escribí una página de prueba que usa jquery para llamarla 10 veces seguidas, y parece ejecutarse simultáneamente, con el cliente esperando 20 segundos y luego obteniendo resultados de todos los servicios al mismo tiempo.AspNetCompatibilityRequirements hace que el servicio web de WCF bloquee
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall,ConcurrencyMode=ConcurrencyMode.Multiple,UseSynchronizationContext=false)]
public class AjaxTestWCFService : IAjaxTestWCFService
Sin embargo si fijo
aspNetCompatibilityEnabled="true"
en web.config entonces no importa lo que hago, con concurrencymode, usesynchronizationcontext
o el modo de contexto ejemplo, o incluso serviceThrottling
config, que aparece para ejecutar cada llamada de servicio web de forma secuencial , con lo que tomar 2 minutos para las 10 solicitudes de regresar !!
Ahora me doy cuenta de que esto puede deberse a la sesión, pero al menos en los servicios ASMX pude establecer la habilitación en falso. Y, de hecho, mi método de servicio web no está utilizando sesión en absoluto. Entonces, quizás se pregunte por qué usar aspNetCompatibilityEnabled
en absoluto. Porque quiero usar la suplantación de ASP.net y la autenticación de formularios.
incluso puse
[ServiceContract(SessionMode=SessionMode.NotAllowed)]
Así que mi pregunta es, ¿es por diseño y cómo puedo permitir solicitudes de servicios web concurrentes con la compatibilidad ASP.net permitido?
Actualmente IE 8. Safari y FireFox pueden ejecutar más de 2 solicitudes al mismo servidor. Creo que IE 8 es 6. Y sí, confirmé desde otra máquina. – Tuviah
en lo que respecta a desactivar el estado de sesión no es una opción. Uso la sesión en otros lugares para contar usuarios concurrentes. ¿Por qué los servicios web de ASMX tienen la capacidad de activar y desactivar el estado de la sesión por método y los servicios de WCF no lo hacen? – Tuviah
@Tuviah: a menos que tenga control total sobre los navegadores utilizados por sus clientes, debe contar con dos solicitudes paralelas. Por ejemplo, estoy trabajando en compañía con 10k computadoras donde IE6 es estándar y nos estamos moviendo a IE7 ... (sí, eso es una actualización, jajaja). –