2 Stimmen

Hinzufügen von REST-Methoden zu WCF-Datendiensten?

Ich muss meinen WCF-Datendienst erweitern, um zusätzliche Methoden, nicht nur die Datenbanktabellen, aufzunehmen.

Aber es scheint nicht richtig zu funktionieren.

Zunächst möchte ich fragen, ob dies legal ist oder verpönt?

Der Grund, warum ich es tun muss, ist, dass ich zusätzliche REST-Methoden hinzufügen muss, die einen Aufruf an ASP.NET Membership Services (die Tabellen sind in der Datenbank) machen, um eine Anmeldung zu validieren, d.h..

    public bool IsValidLogin(string username, string password)
    {
        return System.Web.Security.Membership.ValidateUser(username, password);
    }

Hier ist, was ich habe (ich habe die IsValidLogin zum Testen vereinfacht).

    [WebGet(UriTemplate = "TestMe")]
    public bool IsValidLogin()
    {
        return true;
    }

    // This method is called only once to initialize service-wide policies.
    public static void InitializeService(DataServiceConfiguration config)
    {
        // TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
        // Examples:
        config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
        config.SetServiceOperationAccessRule("IsValidLogin", ServiceOperationRights.All);

Wenn ich jetzt zu

  http://localhost/MyDataAccess/MyService.svc/IsValidLogin

Es scheint zu funktionieren, ich erhalte eine echte Rückmeldung in Form von XML. Aber ich habe einen URI gesetzt, so dass ich dachte, ich könnte dies tun

  http://localhost/MyDataAccess/MyService.svc/TestMe

Aber es scheitert? Ich bin wirklich verwirrt, irgendwelche Ideen?

Auch für sie zu arbeiten, musste ich diese Zeile hinzufügen, aber ein wenig, aber hier verwirrt

    config.SetServiceOperationAccessRule("IsValidLogin", ServiceOperationRights.All);

Jede Hilfe ist sehr willkommen

2voto

Vitek Karas MSFT Punkte 12920

Ich möchte mich nicht zu der obigen REST-Diskussion äußern, sondern nur einen Link zur Dokumentation über die so genannten "Service-Operationen" veröffentlichen: http://msdn.microsoft.com/en-us/library/cc668788.aspx

1voto

Darrel Miller Punkte 133891

Der Begriff ServiceOperation ist eine aufgesetzte Fähigkeit, die genau den Ausweg bietet, den Sie brauchen, wenn Sie etwas anderes tun wollen als Daten aus einer Tabelle zu lesen.

Leider hat der Standardpfad in WCF REST dazu geführt, dass Sie falsch verstanden haben, wie RESTful-Systeme funktionieren sollen. Bei REST geht es nicht nur darum, einige Daten unter URLs bereitzustellen.

Sie haben zwei Möglichkeiten: Entweder Sie bleiben bei der verteilten Datenverarbeitung im RPC-Stil, die die WS-*/SOAP-basierte WCF bietet, oder Sie verbringen einige Zeit damit, zu lernen, worum es bei REST wirklich geht. Hier sind einige Links aquí um Ihnen den Einstieg zu erleichtern.

Ich kann Ihnen nicht sagen, welcher Ansatz für Ihr Szenario der richtige ist. Was ich Ihnen sagen kann, ist, dass Sie mit der aktuellen WCF-REST-Implementierung nicht lernen werden, wie man REST macht. Ich sage nicht, dass es unmöglich ist, aber Sie werden viel stromaufwärts schwimmen müssen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X