Frage

Ich versuche, eine benutzerdefinierte ASP.NET Forms Authentication Service mit WCF zu erstellen. Ich rufe es über eine Testseite, die nur eine einzige Zeile von JS enthält (mit Ausnahme des Script Skripte). Das Problem besteht darin, dass der Server gibt Antwortcode 500 und die Antwortkörper leer ist. Meine Haltepunkte in der Service-Methode und in dem Application_Error in Global.asax nicht getroffen zu werden.

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

kann ich die Anforderung gehen an den Server in den Browser-Tools mit folgendem Anforderungstext finden Sie unter:

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

Andere Dinge auf der Anforderungsseite scheinen auch in Ordnung.

Hier ist der Konfigurationsdienst:

<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>

Und die Deklaration der Schnittstelle:

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

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

Die Umsetzung:

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

    public void Logout()
    {
    }
}

Kann jemand mir sagen, wie diese konfigurieren oder mich auf eine Art und Weise zeigen, es zu debuggen. Ein Artikel über benutzerdefinierte Implementierung Formularauthentifizierung mit einem WCF-Dienst wird willkommen sein. Ich habe mit verschiedenen anderen Einstellungen versuche das Experimentieren mit allen Ausnahme Details Einstellungen, die ich finden konnte, konnte aber keine Fortschritte machen (obwohl ich in der Lage war etwas Regress zu machen und verschiedene Ausnahmen wie Endpunkte fehlen und so weiter zu bekommen).

Vielen Dank für Ihre Zeit.

War es hilfreich?

Lösung

Nicht sicher, ob das hilft. Ich habe noch nie einen solchen Dienst geschrieben, aber die Konfiguration erstellt WCF-Dienst Wich nicht ASP.NET AJAX bereit und arbeitet mit XML anstelle von JSON. Versuchen Sie, diese zu verwenden, anstatt webHttp Verhalten:

<endpointBehaviors> 
  <behavior name="BtxAuthenticationEndpointBehavior"> 
    <enableWebScript /> 
  </behavior> 
</endpointBehaviors>  
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top