[OK]をこれで私はしばらくの間で見てきた最も奇妙な事...のDataRepeater _ItemCommandイベントは、しばらく後に発射を停止し
私はasp.net(フレームワーク4.0)のウェブサイトを構築するためにVSのスタジオ2010を使用しています。私のコードはVB.Netにあります。私のテストブラウザはFirefox(最新版)で、IE8とGoogle Chromeでも同じ動作をテストしています。
私は基本的に、UpdatePanelのDataRepeaterにLinkButtonを持っています。 _ItemCommandイベントは、定期的に(数分ごとに)ページを使用している限り、FIREとなります。
問題は次のとおりです。(別のブラウザタブで)別のWebページを開いて1時間ほど座ってからブラウザタブでテストページに戻り、LinkButtonをクリックするとイベントはありませんページがリロードされます。ボタンがちょうど私の上で死んだように。
私はまずSession TimeOutの問題かもしれませんが、SessionIDをテキストファイルに記録してセッションは期限切れになりません。 TimeOutの
を検出するための新しい方法を使用して< < < <私は私の問題の根は_ItemCommandイベントは、単に発射を停止することであること(ログファイル)を確認することができます。なぜそれが起こっているのか分かりません。
似たような問題(イベントは発砲しない)の下で提案されたほとんどのソリューションを試しましたが、私のイベントは発火しているため、私の問題は正反対です...限られた時間だけです。
私のリピータViewStateが有効になっています。 ボタンのLinkButtonを変更しようとしましたが、同じ問題はありません。 私はScryptManagerのAsyncPostBackTimeoutをアップしようとしました...喜びもありません。 私はsessionState mode = "StateServer"を試しました。 私はAVG Link Scannerを無効にしようとしました。
だから、どうか考えてみてください...現時点では何かを検討する準備ができています。ここで
私は今、セッションのタイムアウトをチェックするために使用しているコードです:
If Context.Session IsNot Nothing And Context.Session.IsNewSession _
And Page.Request.Headers("Cookie") IsNot Nothing _
And Page.Request.Headers("Cookie").IndexOf("ASP.NET_SessionId") >= 0 Then
'SESSION HAS TIMEDOUT
End If
は、こちらのページマークアップ
<asp:UpdatePanel ID="udpRSSFeeds" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="cmdSearch" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="drpNewsFeed" EventName="ItemCommand" />
<asp:AsyncPostBackTrigger ControlID="cmdViewAll" EventName="Click" />
</Triggers>
<ContentTemplate>
<table class="Borderless" cellpadding="0" cellspacing="0" style="width:100%">
<tr><td class="lblHeaderText">NEWS FEEDS</td></tr>
<%--BEGIN: SEARCH GIZMO--%>
<tr><td>
<table class="Borderless" style="width:100%;" cellpadding="0" cellspacing="0">
<tr>
<td style="text-align:right; vertical-align:middle; height:32px;" >
<asp:TextBox ID="tbxSearchBox" runat="server" MaxLength="50" AutoCompleteType="None" Font-Size="16px" style="height:20px; width:187px; font-size:16px; border-style:solid; border-color:#54d242;" onfocus="Javascript:this.focus();this.select();" ></asp:TextBox>
</td>
<td style="text-align:left; vertical-align:middle; width:150px; height:32px;" >
<asp:ImageButton ID="cmdSearch" ImageUrl="~/GUIImages/cmdSearch.jpg" ToolTip="Search feed(s) for keyword(s)." Height="26px" Width="26px" runat="server" BorderStyle="None" ImageAlign="Middle" />
</td>
</tr>
</table>
</td></tr>
<%--END: SEARCH GIZMO--%>
<%--BEGIN FEED LIST--%>
<tr><td style="padding:3px 0px 3px 0px;"><asp:LinkButton ID="cmdViewAll" runat="server" CssClass="MenuItemActive" PostBackUrl="" CausesValidation="false" Text="* View ALL RSS Feeds"></asp:LinkButton></td></tr>
<asp:XmlDataSource ID="xdsNewsFeed" runat="server" DataFile="App_Data/RSSFeeds.xml" XPath="dataroot/qryRSSFeed"></asp:XmlDataSource>
<asp:Repeater ID="drpNewsFeed" runat="server" DataSourceID="xdsNewsFeed" EnableViewState="true" >
<ItemTemplate>
<tr><td style="padding:3px 0px 3px 0px;">
<asp:LinkButton ID="cmdSelectNewsFeed" runat="server" CssClass="MenuItem" CausesValidation="false" CommandName='<%#XPath("ID")%>'>- <%#XPath("Title")%></asp:LinkButton>
</td></tr>
</ItemTemplate>
</asp:Repeater>
<%--END FEED LIST--%>
<tr><td> </td></tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>
が
ビハインドページのコードです。ここでProtected Sub drpNewsFeed_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles drpNewsFeed.ItemCommand
Dim oLogger As New nebLogManager("TESTNWOSGN.txt")
oLogger.TraceStart("drpNewsFeed_ItemCommand (" & Session.SessionID & ")")
'some code that never gets run because the event is not fired...
oLogger.TraceStop("drpNewsFeed_ItemCommand (" & Session.SessionID & ")")
End Sub
Protected Sub cmdSearch_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles cmdSearch.Click
Dim oLogger As New nebLogManager("TESTNWOSGN.txt")
oLogger.TraceStart("cmdSearch_Click (" & Session.SessionID & ")")
'some code that never gets run because the event is not fired...
oLogger.TraceStop("cmdSearch_Click (" & Session.SessionID & ")")
End Sub
重要なそれは、のScriptManagerを着座するmaster_pageを使用しています
包括的なテストシナリオ:
- BROWSE TO:ニュースフィード(左側)のために座る
- LET上http://www.nwosurvivalguide.com/NWOSGN.aspx
- CLICK 30,000分
- 他のニュースフィードをクリックしてください。
結果>>>イベントは発生しませんが、ページが読み込まれます Page_Initはセッションタイムアウトを検出します。 ページを更新すると、すべてが再び機能するようになります。
"セッションIDがテキストファイルに記録されました" - セッションがタイムアウトしないようにするにはどうすればよいですか?デフォルトのタイムアウトは20分だと思うので、1時間待ってテキストファイルにセッションがタイムアウトしていないと言い、web.configでタイムアウトを変更していなければ、isnをロギングしていると思うあなたがしていると思っていることをしていない。 – jhsowter
セッションIDはクッキーに保存され、クッキーのaspnet_sessionId値はサーバー側でタイムアウトしても後続のセッションで再利用されます。 – jhsowter
ハム私は...私は新しいセッションごとに新しいSessionIDを取得する印象を受けていた...それはどのようにローカルで動作した...私は120分にセッションタイムアウトを増やしてみた...まだ喜びはありません。セッションのタイムアウトが120に設定されていても、特定のセッション設定がこれを上書きする可能性があることはわかっています...セッションが期限切れになったかどうかを確認するのに良いアイデアはありますか? – user1196190