2

奇妙な問題があります (または、私にとって奇妙なだけかもしれません)

wsHttpBindingでホストされているWCF WebSrviceがありました。(HTTP)

すべてが良かった。

PHPからアクセスしたかったので、basicHttpBindingに切り替えました。また、サービスを HTTPS にしたので、HTTPS を介した basicHttpBinding になりました。

サービスは (ほぼ期待どおり) 正常に動作しており、メソッドも期待どおりに動作しています。

ただし、最後の構成 (wsHttpBinding、HTTP) で、クライアントがサービス コンストラクターが呼び出していた最初のメソッドを呼び出し、その後、他のすべてのメソッドを再度呼び出すことはありませんでした。(コンストラクターでいくつかのコードを実行していたので、クライアントがサービスの使用を開始したときに一度だけ実行したかったので、これは良かったです)

しかし、新しい構成 (basicHttpBinding、HTTPS) では、メソッドが実行されるたびにコンストラクターが呼び出されます。

これは正常ですか、それとも何か間違ったことをしていますか? 通常の場合、まず、セッション(クライアント)ごとに1回実行したいコードをどうすればよいですか。時間があれば、HTTP と HTTPS の動作が異なるのはなぜですか? (それともバインディングの違いによるものですか?)

ありがとう。

4

1 に答える 1

4

InstanceContextModeWCFサービスのデフォルトはですPerSession。これは、使用していたバインディングによってHTTP経由でサポートされます。ただし、HTTPSはこのデフォルトのセッション動作の発生を防ぐため、PerCall動作が表示されます(毎回新しいサービスオブジェクトが作成されます)。これを修正する方法については、この投稿を参照してください。

于 2011-05-18T17:44:32.600 に答える