Question

Je suis en train de créer une coutume ASP.NET Forms service d'authentification en utilisant WCF. Je fais appel via une page de test qui ne contient qu'une seule ligne de JS (sauf pour les scripts ScriptManager). Le problème est que le code de réponse de retour du serveur 500 et le corps de réaction est vide. Mes points d'arrêt dans la méthode de service et dans le Application_Error dans Global.asax ne sont pas être frappé.

Sys.Services.AuthenticationService.login('user', 'pass', false, null, null, null, null, null);

Je peux voir la route demande au serveur dans les outils de votre navigateur avec le corps de la requête suivante:

{"userName":"user","password":"pass","createPersistentCookie":false}

D'autres choses du côté de la demande semblent aussi très bien.

Voici le service de configuration:

<system.serviceModel>
  <behaviors>
    <endpointBehaviors>
      <behavior name="BtxAuthenticationEndpointBehavior">
        <webHttp/>
      </behavior>
    </endpointBehaviors>
    <serviceBehaviors>
    </serviceBehaviors>
  </behaviors>
  <services>
    <service name="MyNamespace.BtxAuthenticationService">
      <endpoint contract="MyNamespace.IBtxAuthenticationService" binding="webHttpBinding" behaviorConfiguration="BtxAuthenticationEndpointBehavior"/>
    </service>
  </services>
</system.serviceModel>

Et la déclaration de l'interface:

[ServiceContract]
public interface IBtxAuthenticationService
{
    [OperationContract]
    [WebInvoke]
    bool Login(string username, string password, bool createPersistentCookie);

    [OperationContract]
    [WebInvoke]
    void Logout();
}

La mise en œuvre:

public class BtxAuthenticationService : IBtxAuthenticationService
{
    public bool Login(string username, string password, bool createPersistentCookie)
    {
        ... irrelevant because this is never hit
    }

    public void Logout()
    {
    }
}

Quelqu'un peut-il me dire comment configurer ceci ou me pointer vers une façon de le déboguer. Un article sur la mise en œuvre des formulaires personnalisés d'authentification avec un service WCF sera le bienvenu aussi. J'ai essayé d'expérimenter avec divers autres paramètres, y compris tous les paramètres détails d'exception que je pouvais trouver mais ne pouvait pas faire des progrès (même si je suis en mesure de faire une régression et d'obtenir différentes exceptions comme manquant critères d'évaluation, etc.).

Merci pour votre temps.

Était-ce utile?

La solution

Je ne sais pas si cela aide. Je ne l'ai jamais écrit un tel service, mais la configuration crée un service WCF Wich est pas ASP.NET AJAX prêt et fonctionne avec XML au lieu de JSON. Essayez d'utiliser ce comportement au lieu de webHttp:

<endpointBehaviors> 
  <behavior name="BtxAuthenticationEndpointBehavior"> 
    <enableWebScript /> 
  </behavior> 
</endpointBehaviors>  
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top