1

SOAP API のラッパーを作成しています。VS2010 で WSDL を指すようにサービス参照を設定しました。login を呼び出すと、API はセッション変数を Cookie で返します。

config のバインディングでallowCookies="true"を設定しました。

これまで、ラッパーにloginlogoutの 2 つの API 呼び出しを実装しました。

login用のページとlogout用のページを持つ単純な ASP.NET アプリケーションであるテスト ハーネスがあります。

ログインが送信されると:

using (var ApiClient = new ApiClient())
            {
                ApiClient.Login(txtUsername.Text, txtPassword.Text, txtOrganization.Text, txtIPAddress.Text);
            }

そして今、私の ApiClient.Login メソッドで:

using (var soapService = new WSDLInterfaceClient())
            {
                var loginCredentials = new loginRequest
                {
                    username = username,
                    password = password,
                    organization = organization
                };

                if (!string.IsNullOrWhiteSpace(ipAddress))
                    loginCredentials.ipAddress = ipAddress;

                var loginResponse = soapService.Login(loginCredentials);
            }

したがって、これはすべて問題なく終了します。usings を削除し、ラッパー内で使用するクラス レベルの WSDLInterfaceClient を用意する必要があると考えていました。新しいクライアントを構築するたびに Cookie が消去されると考えたからです。しかし、そうではありません。

logoutメソッドも同様に実装されています。ログインせずにログアウトしようとすると、ログアウト API 呼び出しで例外がスローさます。奇妙なことに、ログアウトページに移動して送信すると (これにより、新しいラッパー クライアントが構築され、新しいサービス クライアントが構築されます)、それが認識されます。ログインしています。もう一度ログアウトしようとすると、期待どおりに例外がスローされます。

Cookie は、各ページで新しいインターフェイス クライアントと新しいラッパー クライアントの両方を構築する場合でも、Cookie が持続するという点で機能しているようです。

これは悪いことではありませんが、私はそれがどのように機能しているかについて当惑しています。ASP.NET/WCF がセッション用にこれらの Cookie を保存している場所はありますか? これはコンソール アプリでどのように機能しますか?

4

0 に答える 0