2017-01-30 5 views
2

私はDelphi 10.1 Berlin Update 2 EnterpriseとDataSnapクライアント/サーバーRESTフレームワークを使用しています。Delphi Datasnapクライアントコードが不正な例外を受け取りません

デバッグせずにアプリケーションを実行し、呼び出される権限がないメソッドを呼び出すと、コードは例外なく実行され、メソッドはnull応答を返します。

クライアントがDataSnapサーバーメソッドに対して対話的にデバッグすると、「承認されていません」という2つのポップアップ例外が発生します。

最初のバブルは上になり、2番目のバブルは上に置き換えられます。

2番目の例外は "eaten"となり、セッション/接続は単に閉じられ、メソッドは空の結果を返します(戻り値の型が整数の場合はゼロ、文字列戻り値の場合は空の文字列)。

これはDatasnap.DSClientRest単位でExecuteRequest方法の終わり近くに、コードの次のセクションで起こっている:

except 
    on E: TDSRestProtocolException do 
    LSessionExpired; 
end; 

は、これらの例外(例えばTDSRestProtocolExceptionは)私のコードに到達していないのはなぜ?

私は一種の、これは2を更新するために、新しいだと思う、と私は2

Attachedが示す(Delphiのウィザードによって生成された標準例)スケルトンの例で更新するように前に私のコードにこれらの例外バブルを見て覚えています問題は - ボタンをクリックすると、ユーザーが許可されていないために "4321"ではなく ""が表示されますが、実行時例外はありません。

私は=のDataSnapに新たなんだ、そう役立つ回答を事前に

感謝:-)私と一緒にクマ)

+0

NOTEこのfunctnを呼び出そうTモジュール(http)ではなく、単純なTCP/IPクライアントDataSnapモジュールを使用します。 –

答えて

1

これは、サーバーのwebmoduleとクライアント側に追加DSAuthenticationManager1コンポーネントに起こっています認証に失敗しています。

認証 Adding Authentication and Authorization

+0

この記事では、DataSnapクライアントモジュールを使用していますが、使用する必要のあるDataSnapクライアントRESTモジュールは使用していません。クライアントDSRestConnection1コンポーネントでユーザー名を設定しても、認証例外はまだUIに届きません。注意!これらの例外はライブラリコードで発生していますが、私のコードまではバブリングされていません。認可チェック*は発生していますが、ライブラリコードで食べられているため、私のUIコードは例外を見ていません。 –

+0

わかりやすくするため、「認証と承認の追加」の記事のSQLConnection1は期待どおりに機能し、UIには不正な例外が表示されます。同じ構成で同じ例外が表示されないサンプルプロジェクトのDSRestConnection1です。 –

0

Well..I'mわからないで作業する方法を確認したが

procedure TClientModule1.TestCon(aUsername, aPassword: string); 
var 
lServerMethodsClient : TServerMethodsClient; 
begin 
DSRestConnection1.UserName := aUsername; 
DSRestConnection1.Password := aPassword; 
lServerMethodsClient:=TServerMethodsClient.Create(DSRestConnection1); 
end; 
を作成されるサーバー・メソッドのインスタンスの前にDSRestConnection1コンポーネントへのユーザー名とパスワードを提供しようとするために、この通過してください。

と、これはクライアントのDataSnap RESを使用しているウルclientformから

procedure TF_ClientForm.Button1Click(Sender: TObject); 
begin 
ClientModule1.TestCon(EdtUsername.Text, EdtPassword.Text); 
end; 
+0

問題はauth * entic * ationではなく、auth * ouriz * ation :-) –

+0

TCP/IP経由で "DataSnapサーバー"と "DataSnapクライアントモジュール"に切り替わりました。美しく動作します。同等のRESTにこの問題がある理由を確認してください。ただし、時間が無駄になりました。ありがとう、pn098、貢献する時間を取る= D –

関連する問題