2

私は、デスクトップのバックグラウンドを持つ開発者と一緒に新しいショップで働いているWeb開発者です。そのため、コードの整理に関しては、特定の特異性/ベストプラクティスがあります。その1つは、個別のUIビューが異なるプロジェクトに分離されていることです。

そのため、家のWeb側では、さまざまなアプリドメインでさまざまなプロジェクトを構築する際に問題が発生します。

1)default.aspxを使用した「ポータル」プロジェクトがあります。背後のコードには、Login_Authenticateイベント内から呼び出され、デスクトップアプリケーションの「ビジネスレイヤー」にログインするカスタム認証メソッドがあります。ビジネス側は、セッションデータをASP.NETセッションに格納します。

2)default.aspxを使用した「viewer」プロジェクトがあります。これは元々「Viewer.aspx」としてポータルプロジェクトにあり、同じログインスキームでカバーされ、正常に認証されましたが、立っておくとよいと判断しました。別のビューであるため、独自のプロジェクトで。

両方のweb.configファイルに同じマシンキーを追加して、.NETフォーム認証をシングルサインオンで渡すことができるようにしました。

私は2つの異なる方法でビューアプロジェクトを構築しました。

1回目の試行(独自のURL):

http:// localhost / Viewer

2回目の試行(ポータルURLの下のサブドメイン):

http:// localhost / Portal / Viewer

私が直面している問題は、PortalプロジェクトとViewerプロジェクトの間でセッションが渡されていないことです。これは、IISが異なるアプリドメインでそれらを実行しているためです。残念ながら、ポータルからのASP.NETセッションがないと、ビューアはビジネスアプリケーションにログインしません。

ベストプラクティスはありますか/1つのアプリドメインで複数のプロジェクトを実行することさえ可能ですか?ビューアーは同じセッションを必要とするため、ポータルアプリケーションの一部である必要がありますか?ビューアーは、ビジネスレイヤーへの独自のログインを必要とする別個のプロジェクトである必要がありますか?このシナリオのベストプラクティス/ガイドラインさえありますか?

4

2 に答える 2

4

デフォルトでは、異なるアプリケーション間でセッションを共有することはできません。

実際には、ほとんどのプロジェクトはこのように分離されていません。私の経験では、ほとんどがある種の n 層アーキテクチャを使用しています。基本的に、すべての「ビュー」コードは 1 つの asp.net プロジェクトにあり、ビジネス ロジック/データ オブジェクトは別の dll プロジェクトにあり、データ アクセスは 3 番目の dll プロジェクトにあります。Web サイトは、他の 2 つの dll を参照するだけです。

あなたの問題を解決するために、この答えはあなたが望むものを与えるかもしれません: ASP.NETセッション状態サービスを使用してアプリケーション間でセッションを共有する

于 2012-05-01T04:08:44.740 に答える
0

複数のプロジェクトを持つ方法がありますが、サイトは 1 つです。この例は少し古いですが、今でも機能しており、私たちのサイトのやり方です。

于 2012-05-01T21:25:36.720 に答える