2

私はあなたがあなたの会社名で購読することができ、あなたがあなたの会社に特有のサイトのすべての機能を使うことができるプロジェクトに取り組んでいます。たとえば、会社abcdは、次のようなWebサイトから独自のURLを取得できます。

www.test.com/abcd/productlist.aspx

会社efghは、独自のURLでログインして、製品リストを表示することもできます。

www.test.com/efgh/productlist.aspx

誰かが私を助けることができますどのように私は最善のアプローチで私のサイトでこれを実装できますか

Global.ascxファイルを使用して会社を区別するアプローチを考えています。有効なリクエストごとにglobal.ascxのURLから会社名を抽出するコードを記述し、すべてのページにthis.form.action=requestを配置します。 .rawurl。

他にアプローチはありますか?誰かがこのタイプの機能を実装した場合は、私にあなたのアプローチを教えてください。

ありがとう

4

4 に答える 4

1

ASP.NET 3.5 SP1を使用している場合は、MVCプロジェクトから導入された新しいルーティングエンジンを調査する必要があります。それはきれいな解決策になります。

于 2010-01-18T07:31:05.513 に答える
1

http://urlrewriting.netの DLLと次のようなルールを使用しています。

<urlrewritingnet xmlns="http://www.urlrewriting.net/schemas/config/2006/07">
  <rewrites>
    <add name="Customer" virtualUrl="^~/([^/]+)/([^/]+).aspx" destinationUrl="~/$2.aspx?customer=$1"/>
    <add name="CustomerStart" virtualUrl="^~/([^/]+)/$" destinationUrl="~/Default.aspx?customer=$1"/>
    <add name="CustomerStartAddSlash" virtualUrl="^http\://([^/]+)/([a-zA-Z0-9_-]+)$"
                                      destinationUrl="http://www.example.com/$2/"
                                      redirect="Domain" redirectMode="Permanent" />
  </rewrites>
</urlrewritingnet>

これらのルールは、次のマッピングを行います。これらはrewritesであるため、ユーザーのブラウザには常に左側の URL が表示されます。

Rule 1: http://www.example.com/customerA/something.aspx => http://www.example.com/something.aspx?customer=customerA
Rule 2: http://www.example.com/customerA/ => http://www.example.com/Default.aspx?customer=customerA

3 番目のルールは、書き換えではなくリダイレ​​クトです。つまり、ユーザーのブラウザに末尾のスラッシュが追加されるようにします(相対パスが正しく機能するようにします)。

Rule 3: http://www.example.com/customerA => http://www.example.com/customerA/
于 2010-01-18T08:33:10.443 に答える
0

要件に完全に適合するソリューションは見つかりませんでした。Global.ascxのBeginRequest、ログインページ、ベースページ、および用に作成された共通クラスを使用する独自のロジックを作成しましたResponse.Redirect。Asp.Netの、PathsおよびSession変数を直接使用しなくなりましResponse.Redirectた。代わりに、それらのラッパーを作成して、URLからPathsにcompanyNameを追加しました。

私のコードについてさらに情報が必要な場合はお知らせください

他の答えは大歓迎です。

ありがとう

于 2011-11-05T13:30:50.610 に答える
0

これらの 質問を見てください。
あなたのアプローチには名前があります。それはマルチテナンシーと呼ばれます。

于 2010-01-18T07:25:03.547 に答える