2009-05-04 12 views
0

小さなイントラネットを作成しようとしています。これは私のローカルPC上にWebサーバーを持っています。このWebサイトのルートはダッシュボードになり、ログイン/登録機能(デフォルトのASP.NETメンバーシップ)が含まれます。ASP.NET:Webアプリケーション間でリソース(メンバーシップ、ライブラリ)を共有する方法

 
http://localhost 
http://localhost/Account 

イントラネットの残りの部分のようなサブアプリケーションで構成されます:

 
http://localhost/ApplicationName 

ルートのウェブサイト、およびサブアプリケーションのほとんどは、私がされるため、ユーザの認証を要求されます既定のASP.NETメンバーシッププロバイダを利用します。

すべてのプロジェクト(ルートおよびサブ)のVisual Studio、 に別々のプロジェクトであり、すべてのプロジェクトは、それが展開するための独自の WebSetupプロジェクトのしています。

1.)サブアプリケーションでASP.NET Membershipを使用するにはどうすればよいですか?

さらに、ほとんどのアプリケーション(ルートとサブ)はサードパーティライブラリ(データフレームワーク)を使用します。

2.)ルートプロジェクトでライブラリを参照する方法と、サブアプリケーションで参照されたライブラリを「使用する」方法はありますか?

ありがとうございます!

答えて

2

複数のWebプロジェクトから使用できるクラスライブラリプロジェクトで共通コードを作成します。メンバーシッププロバイダについては、メンバーシップデータを外部SQLインスタンス(同じサーバー上にある可能性があります)に格納し、各プロジェクトで同じ接続文字列を使用するだけで済みます。

+0

あなたが参照している一般的なコードはサードパーティのライブラリです。このライブラリは、私が配備するすべてのプロジェクトの/ bin /フォルダに含まれる複数のdllファイルで構成されています。私はそれらをルートプロジェクトの/ binフォルダにのみ展開したいと思っています。サブプロジェクトはそれらのファイルを参照する必要があります。これは可能ですか? – Ropstah

+0

アセンブリがGAC(グローバルアセンブリキャッシュ)に登録される必要があるようです。メンバーシップの部分については、答えは最善の解決策です。 – Ropstah

+0

@ropstah - GACにライブラリを置く必要がないと思う唯一の方法は、これらのライブラリを参照する独自のレイヤをプロジェクトに含めることです。ラッパー・ライブラリーへの参照は、外部ライブラリーへの参照を「連想させる」べきです。私はその努力の価値があるかどうかはわかりません。 – tvanfosson

1

Membershipは、1つまたは複数のアプリケーションで動作するように設計されています。メンバーシップ・データの各アプリケーションを格納できるデータベースのインスタンス(アプリケーションのデータベースとは別)を持つことができます。すべてのアプリケーションで同じMembershipデータを使用する場合は、defining Membership in each application's web.configの場合は、同じapplicationName(およびconnectionString)を指定します。

質問の2番目の部分については、tvanfossonが投稿した回答(コメントとともに)が正しい経路であなたを導くはずです。

編集(@ ropstah Comment):ああ、私はそれについて説明しませんでした。その場合は、Single Sign-on (SSO)を実装します。 Masoud Tabatabaei氏は、このプロセスを進んでいるan article at ASPAlliance.comと投稿しました。また、Keith Rullthis Stack Overflow questionによって提供される回答も同様に役立ちます。

+0

web.configエントリのapplicationNameを、すべてのプロジェクトの同じアプリケーションに設定しようとしました。しかし、ルートプロジェクトにログインするとき、私はまだサブプロジェクトにログインする必要があります(ユーザー/パスは動作しますが、アプリケーション間ではクッキーは保持されません)。 – Ropstah

+0

私はあなたに多くのポイントを与えることができたらいいと思う:-) Thanx! – Ropstah

関連する問題