0

テーブルからハイパーリンク値を取得するグリッドビューがあり、これをハイパーリンクの NavigateUrl にも追加します

<asp:HyperLink ID="LinkSection" runat="server" Text='<%# Eval("SECTION") %>' NavigateUrl='<%# "http://localhost:50686/" + (string)Eval("SECTION") + ".aspx"%>'>

私がウェブサイトを展開すると、ホラーのデバッグが始まりましたが、すべてがうまく機能しているように見えました。IIS がセッションに INPROC を使用していることに気付きましたが、デバッグ中に Visual Studio が何を使用するかはわかりませんが、うまく機能します。

webconfig ファイルに移動し、INPROC を使用するように手動でセッション変数を設定したら

<sessionState mode="InProc"
                  cookieless="true"
                  regenerateExpiredSessionId="true"
                  timeout="30" />

ハイパーリンクをクリックすると、アプリケーションが機能しなくなり、セッション値が失われるようです。そのため、セッション値がnullの場合にログインページにリダイレクトするロジックを追加しました。面白いのは、リンクをクリックするとログインページに戻ります。

セッション値を次のように設定しています

Session["LoggedInUser"] = txtEmail.Text;

そして、それを取得します

 cmd.Parameters["@EMAILACCT"].Value = Session["LoggedInUser"];

私はこれをどのサーバーファームにも展開していないので、可能であればINPROCであると私が読んだセッションの最高のパフォーマンス方法に固執したいと思います.

4

1 に答える 1

1

sessionstate モードで遊んでいるときに、cookieless オプションを見落としているようです。mode=Inproc および cookieless=true を使用すると、asp.net は URL を使用してセッション ID を保存します。絶対 URL を使用する場合、asp.net はセッション ID を追加できません。回避策は、次のように URL を相対 URL に変換することです。

NavigateUrl = Response.ApplyAppPathModifier(yoururl);

ここに議論があります。役に立つかもしれません。

于 2013-08-16T06:57:04.763 に答える