Question

Je cherchais des informations techniques sur le fonctionnement du Kit de démarrage WCF REST, mais je n'ai pas trouvé ce que je voulais. Examinons l'extrait de code pris de l'usine d'hôte de service personnalisée:

    protected override System.ServiceModel.ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
    {
        var host = (WebServiceHost2)base.CreateServiceHost(serviceType, baseAddresses);
        var authenticationProvider = Container.TryGetInstance<IAuthenticationProvider>();
        var authorizationRepository = Container.TryGetInstance<IUserFinder>();
        if (authenticationProvider == null)
            authenticationProvider = new DefaultAuthenticationProvider(authorizationRepository);
        var securityContext = new SecurityContext();
        host.Interceptors.Add(new AuthenticationInterceptor(authenticationProvider, securityContext));
        return host;
    }

Cette méthode de code augmente-service n'est exécutée qu'une seule fois.

Cependant, sur chaque demande HTTP Authentication Interceptor est exécutée. Comme vous pouvez le voir AuthenticationInterceptor a des dépendances sur la classe SecurityContext et le référentiel iUserfinder.

Que se passe-t-il lorsque plusieurs demandes HTTP arrivent en même temps?

  1. WCF exécute-t-il simultanément AuthenticationInterceptor, ce qui signifie que la sécurité SecurityContex et iUserFinder devraient être sûres? IUserfinder dépend des ressources de base de données.
  2. Chaque demande est exécutée les unes après les autres, donc Authentication Interceptor ne peut pas être exécutée simultanément par deux appels différents?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top