私はデスクトップ開発者の新しいショップで働いているWeb開発者です。コードを整理する際には、特定の特質やベストプラクティスがあります。 UIビューは異なるプロジェクトに分かれています。複数のアプリケーションを単一のAppDomainで実装
ので、家のウェブ側に、私は別のアプリケーションドメイン内の別のプロジェクトの建物に問題がある:
1)私は、背後にあるコードではdefault.aspx と「ポータル」プロジェクトを持っていますLogin_Authenticateイベントの内部から呼び出されるカスタム認証メソッドがあり、デスクトップアプリケーションの「ビジネスレイヤー」にログインします。ビジネス側はセッションデータをASP.NETセッションに保存します。
2)私はdefault.aspxを持つ "viewer"プロジェクトを持っています。これはもともとポータルプロジェクトの "Viewer.aspx"と同じログインスキームと認証された罰金でカバーされていましたが、それは独立した視点であるため、それ自身のプロジェクトに立つのが得意です。
両方のweb.configファイルに同じマシンキーを追加して、.NETフォーム認証をシングルサインオンで渡せるようにしました。
私は2つの異なる様式で、視聴者のプロジェクトを構築しました:
第一トライ(それ自身のURL):
第二トライ(ポータルURLの下にサブドメイン):
http://localhost/Portal/Viewer
問題は、セッションがポータル間で受け渡しされていないことですプロジェクトとビューアプロジェクト。私はこれがIISがさまざまなアプリドメインでそれらを実行しているためです。残念ながら、ポータルからのASP.NETセッションがないと、ビューアはビジネスアプリケーションにログインしません。
複数のプロジェクトを1つのアプリドメインで実行することは可能ですか?ビューアは同じセッションを必要とするため、ポータルアプリケーションの一部である必要がありますか?ビューアは、ビジネス層に独自の別のログインを必要とする別のプロジェクトである必要がありますか?このシナリオのベストプラクティス/ガイドラインがありますか?
右 - それは私が従うアプローチです。彼ら(デスクトップ/ winform開発者)が望むのは、別のプロジェクトにviewer.aspxページを作成してからxcopyを使ってポータルアプリケーションドメインに展開することです。なぜ、これが悪い習慣とみなされたのかについて、かなり具体的な理由があることを期待していました。 –
プログラミングの喜びは "ひどい"システムを構築することができますが、それでも機能するかもしれません。あなたのケースでは、あなたは "ひどい"アーキテクチャを持っていますが、それを動作させる方法があります。あなたが持っているすべてのビューのための完全に異なるプロジェクトを作成することは、メンテナンスの悪夢になるでしょう!私はいくつかのオープンソースプロジェクトを見て、彼らがどのようにそれを行うのかを見てみることをお勧めします。 –
xcopyを使用してファイルを手動でコピーすることで、同じアプリドメインに展開できます。これは、手動で行った以前のWebプロジェクトで証明されています。大きな疑問は、もしそうでなければ、なぜそうではないのでしょうか? –