2

マルチブランドのアプリケーションを作成しています (つまり、ユーザーがどこから誘導されたかによって、ユーザーごとに異なる外観が表示されます)。

エンドユーザーは、クエリ文字列を使用してサイトにアクセスし、クライアント ID を設定します。たとえば、

mysite?clientID={GUID}

私がやろうとしているのは、次のチェックを実行するように設定することです

If Session["ClientID"] is null or empty
    if querystring has ClientID 
        Set Session[ClientID] to QueryString[ClientID]
    else if the user has their clientID set in the db
        Set Session[ClientID] to DB Value 
    else 
        Use default ClientID
End

私が簡単に解決できるさまざまな項目をチェックするためのコードです。私が今困っているのは、このコードを「押し込む」場所で、ページの読み込みごとにチェックされるようにすることです。より具体的には、アプリケーション ライフサイクル イベント フックを使用する必要がある場合は、これが最も適しているため、ページがレンダリングされる前に、Membership オブジェクト、QueryString、および Session オブジェクトにアクセスできます。

4

3 に答える 3

1

これは(とりわけ)リクエストのライフサイクルです:

  • Application_BeginRequest。
  • Application_AuthenticateRequest。
  • Application_AuthorizeRequest。
  • Application_PostAuthorizeRequest。
  • Application_ResolveRequestCache。
  • Application_AcquireRequestState。
  • Application_PreRequestHandlerExecute。
  • ページイベントハンドラーが実行されます
  • Application_PostRequestHandlerExecute。
  • Application_ReleaseRequestState。
  • Application_UpdateRequestCache。
  • Application_EndRequest。

詳細な仕様については、http://msdn.microsoft.com/en-us/library/system.web.httpapplication.aspxを参照してください。

したがって、このイベントはあなたのニーズに最も適していると思います。

Application_PostAuthorizeRequest

MSDNの説明

現在のリクエストのユーザーが承認されたときに発生します。

ソース:

http://msdn.microsoft.com/en-us/library/system.web.httpapplication.postauthorizerequest.aspx

于 2012-06-17T21:19:10.603 に答える
1

global.asax でイベントを使用するApplication_BeginRequestか、MasterPage がある場合はそのコード ビハインドに、ページが BasePage ファイルから継承している場合は BasePage ファイルのコード ビハインドに配置できます。

于 2012-06-17T20:59:58.520 に答える
1

global.asax (ホーム ディレクトリ内) が最適な場所です。

protected internal void Application_BeginRequest(object sender, EventArgs e)
{
   // your code
}

詳細については、http://msdn.microsoft.com/en-us/library/2027ewzw.aspx をご覧ください。

于 2012-06-17T21:00:17.677 に答える