0

過去 4 年間、ショップ Web アプリを開発してきました。現在、新しい機能を追加しているため、アプリは構成に応じて 2 つの異なる方法で動作します。

最初の方法は、通常の Web アプリです。

2 番目の方法は、次のように機能します。

  1. ドメインまたはサブドメインを 1 つの製品に関連付ける
  2. ユーザーがそのドメインにアクセスすると、ショップは商品ページを表示する必要があります。アプリは、ユーザーがチェックアウト以外のページにアクセスすることを許可しません
  3. ユーザーが購入ボタンをクリックすると、アプリはユーザーをチェックアウト ページにリダイレクトします。

最初は と考えていServer.Transferたので、Global.asax に書きました。

protected void Application_BeginRequest(object sender, EventArgs e)
{
    if (check for conditions)
    {
        Server.Transfer("product.aspx", true);
    }
}

このアプローチの最初の問題はセッションでした。product.aspx がロードされるとき、セッションが初期化されていないため、失敗します。

その後、そのコードを挿入しましApplication_PreRequestHandlerExecuteたが、ポストバックで問題が発生しました。に問題があることは既にわかっていServer.Transferましたが、2 番目のパラメーターがtrueであるため、解決する必要があります。EnableViewStateMac="False"チェックアウト aspx へのリダイレクトがあるため、も設定しましたが、どちらも機能しません。何をしても、アプリは ViewState の認証に失敗するか、ポストバックに応答しません。

私たちが試した別の解決策は、デフォルト ページをプログラムで変更することでしたが、これは不可能のようです。web.config のデフォルト ページを手動で変更すると、アプリは正常に動作しますが、残念ながらこれは許可されていません。

質問は次のとおりです。

Server.Transfer を使用する必要がありますか (使用できると仮定します)。外部構成ファイルまたはプログラムで、何らかの方法で既定のページを変更できますか? 私たちのアプローチが間違っているだけかもしれませんが、イメージすることはできませんでした。

おー!私はほとんど忘れていました: 私たちは aspx .net Framework 2.0 と C# .net 3.5 を使用しています

うまく説明できたと思います

前もって感謝します!

4

1 に答える 1

0

MSDN ヘルプ ページhttp://support.microsoft.com/kb/316920EnableViewStateMac="False"から次の情報が役に立つかもしれません(これがデフォルトです)呼び出すときは、次のServer.Transferようにします:

Server.Transfer("product.aspx", true);

これに:

Server.Transfer("product.aspx");

またはこれ:

Server.Transfer("product.aspx", false);
于 2012-08-20T09:23:41.697 に答える