質問が言うように。現時点では、セッションごとにWCFクライアントプロキシ(正確にはChannelFactory)をサービスにキャッシュしています。これは正常に機能します。しかし、今はAzureに移行しており、(セッションの)複数のインスタンスがあります。AppFabricセッションの状態が機能するようになりました。そのため、セッションはAzureによって提供されますが、問題はチャネルファクトリのキャッシュにあります。ファクトリは[Serializable]ではないため、Session[]に保存できないようです。オプションは何ですか?WCFサービスメソッドが呼び出されるたびにチャネルを再作成する必要がありますか?
[1.以前の動作状態; 2.新たに試みられた解決策。3.フォールバックオプション]
- WCFクライアント->ASP.NET->セッションキャッシュファクトリ->チャネル->WCFサービス
- WCFクライアント->ASP.NET->ファクトリを保存できません!->チャネル->Azureの役割WCFサービス
- WCFクライアント->ASP.NET->呼び出しごとに新しいチャネル->AzureロールWCFサービス
更新:ChannelFactoryをキャッシュ(共有)することはできないことを確認しました。したがって、現在共有されていないクレデンシャル(UserNameCredentials)をどのように共有すればよいのか、そしてどういうわけか分割されたインスタンス全体に分散する必要があるのかという疑問が残ります。明らかなオプションは、暗号化されたクレデンシャルをキャッシュに保存することです。それは良い考えですか?それを行う他の方法はありますか?
これは新しい質問として続きます:WCFクライアントの資格情報を共有する方法...