2

データベース テーブルだけでなく、追加のメソッドを含めるために、WCF データ サービスを拡張する必要があります。

しかし、正しく動作していないようです。

最初に質問したいのですが、これは合法ですか?または眉をひそめた?

私がそれをする必要がある理由は、ログインを検証するために ASP.NET メンバーシップ サービス (テーブルはデータベースにあります) を呼び出す追加の REST メソッドを追加する必要があるためです。

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

これが私が持っているものです(テストのためにIsValidLoginを単純化しました)。

    [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);

今私が行くとき

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

XMLの形で真の背中を得ることができたようです。しかし、URIを設定したので、これができると思いました

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

しかし、それは失敗しますか?私は本当に混乱しています、何かアイデアはありますか?

また、機能させるには、この行を追加する必要がありましたが、ここで少し混乱しています

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

どんな助けでも本当に感謝しています

4

2 に答える 2

2

上記の REST に関する議論にはコメントせず、「サービス操作」と呼ばれる方法に関するドキュメントへのリンクを投稿するだけです: http://msdn.microsoft.com/en-us/library/cc668788.aspx

于 2010-08-11T17:47:03.500 に答える
1

ServiceOperation の概念は、テーブルからデータを読み取る以外のことをしたい場合に必要なエスケープを正確に提供するために追加された機能です。

残念ながら、WCF REST の既定のパスでは、RESTful システムがどのように機能するかを誤解しています。REST は、URL でデータを公開するだけではありません。

実際には 2 つの選択肢があります。WS-*/SOAP ベースの WCF が提供する分散コンピューティングの RPC スタイルに固執するか、REST とは何かを学ぶことに時間を費やすかです。ここには、開始するためのリンクがいくつかあります。

シナリオに適したアプローチが何であるかはわかりません。私が言えることは、現在の WCF REST 実装を使用して REST を実行する方法を学ぶつもりはないということです。不可能だと言っているわけではありません。

于 2010-08-07T20:11:09.633 に答える