2012-02-08 4 views
0

[OK]をこれで私はしばらくの間で見てきた最も奇妙な事...のDataRepeater _ItemCommandイベントは、しばらく後に発射を停止し

私はasp.net(フレームワーク4.0)のウェブサイトを構築するためにVSのスタジオ2010を使用しています。私のコードはVB.Netにあります。私のテストブラウザはFirefox(最新版)で、IE8とGoogle Chromeでも同じ動作をテストしています。

私は基本的に、UpdatePanelのDataRepeaterにLinkBut​​tonを持っています。 _ItemCommandイベントは、定期的に(数分ごとに)ページを使用している限り、FIREとなります。

問題は次のとおりです。(別のブラウザタブで)別のWebページを開いて1時間ほど座ってからブラウザタブでテストページに戻り、LinkBut​​tonをクリックするとイベントはありませんページがリロードされます。ボタンがちょうど私の上で死んだように。

私はまずSession TimeOutの問題かもしれませんが、SessionIDをテキストファイルに記録してセッションは期限切れになりません。 TimeOutの

を検出するための新しい方法を使用して< < < <私は私の問題の根は_ItemCommandイベントは、単に発射を停止することであること(ログファイル)を確認することができます。なぜそれが起こっているのか分かりません。

似たような問題(イベントは発砲しない)の下で提案されたほとんどのソリューションを試しましたが、私のイベントは発火しているため、私の問題は正反対です...限られた時間だけです。

私のリピータViewStateが有効になっています。 ボタンのLinkBut​​tonを変更しようとしましたが、同じ問題はありません。 私は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>&nbsp;</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を使用しています


包括的なテストシナリオ:

  1. BROWSE TO:ニュースフィード(左側)のために座る
  2. LET上http://www.nwosurvivalguide.com/NWOSGN.aspx
  3. CLICK 30,000分
  4. 他のニュースフィードをクリックしてください。

結果>>>イベントは発生しませんが、ページが読み込まれます Page_Initはセッションタイムアウトを検出します。 ページを更新すると、すべてが再び機能するようになります。

+0

"セッションIDがテキストファイルに記録されました" - セッションがタイムアウトしないようにするにはどうすればよいですか?デフォルトのタイムアウトは20分だと思うので、1時間待ってテキストファイルにセッションがタイムアウトしていないと言い、web.configでタイムアウトを変更していなければ、isnをロギングしていると思うあなたがしていると思っていることをしていない。 – jhsowter

+0

セッションIDはクッキーに保存され、クッキーのaspnet_sessionId値はサーバー側でタイムアウトしても後続のセッションで再利用されます。 – jhsowter

+0

ハム私は...私は新しいセッションごとに新しいSessionIDを取得する印象を受けていた...それはどのようにローカルで動作した...私は120分にセッションタイムアウトを増やしてみた...まだ喜びはありません。セッションのタイムアウトが120に設定されていても、特定のセッション設定がこれを上書きする可能性があることはわかっています...セッションが期限切れになったかどうかを確認するのに良いアイデアはありますか? – user1196190

答えて

1

最初に私は私の最初のセッションタイムアウト検出ロジックが欠陥だったと指摘しJHSOWTERに感謝したいです。それは本当に私を正しい軌道に戻しました。

問題は、アプリケーションプールのリサイクルのためにセッションがタイムアウトしたことでした。

私はアプリケーションプールのタイムアウトを制御する共有ホスト上にいるため、標準のSessionTimeoutソリューションは機能しません。

溶液(<system.web>タグ内)Web.Configファイルに次の行を追加しました:

<sessionState timeout="60" cookieless="false" mode="StateServer" /> 
<machineKey ... /> 

私のマシンキーのタグを生成するには、私は、このツールを使用し: http://aspnetresources.com/tools/machineKey

後それらの変化はすべて私の問題がなくなった。

もう一度お世話になりました。

+0

これは分かりました。 – jhsowter

0

私はこれについて調べてみましたが、AVG Link Scannerのために、かなりの数の人々が同様の動作をしていることがわかりました。

Firefox __doPostBack not working after idle time

http://forums.asp.net/post/4021595.aspx

+0

チェック、テスト、報告します。ありがとう。 – user1196190

+0

私のAVG Link Scannerを無効にしても、まだ喜んではいません。 – user1196190

+0

Hosterがサーバー上でAVGを実行しているかどうかを確認します。私はもっ​​と知っているオンスを報告します。 – user1196190

関連する問題