共有ホスティング サービスにデプロイされた ASP.NET MVC3 アプリケーションがあります。FormsAuthentication と SSL を使用します。
<authentication mode="Forms">
<forms loginUrl="~/Home/Index" timeout="240" requireSSL="true" />
</authentication>
問題は、一部の Razor (部分) ビューにあります。コントローラー メソッドへのコールバックを実行します。これは、テストの目的で、単純にスリープして PartialView を返します。私の質問は、Response.IsAuthenticated に関するものです。コールバックとスリープの前は true であり、スリープが 30 秒以下である限り、その後も true のままです。ただし、さまざまな長い期間 (55 秒など) でテストしたところ、その場合は Response.IsAuthenticated が false になります。元のコードではリダイレクトを行う必要があるため、これは問題です (部分ビューで JS、open.window を介して)。Response.IsAuthenticated は false であるため、FluentSecurity はすぐにユーザーを loginUrl に送信します (これは望ましくありません)。
これはどこかのタイムアウト (「KeepAlive」、「ServerTimeout」?) に関連しているようですが、私は response.isauthenticated タイムアウトを Google で検索しましたが、何も思いつきませんでした。率直に言って、この動作はサイト全体で発生しているようです: ユーザーがページを 1 分以上放置すると (私は FF を使用しています)、ページにアクセスしようとすると、自動的に loginURL にリダイレクトされます。セッションタイムアウトが「120」に設定されていることに注意してください。面白いことに、アプリを Windows Azure にデプロイしたときには、この動作は経験しませんでした (ただし、他にも問題がありました)。別のホストに切り替えたときに発生し始めました。
このトピックに関する情報へのポインタをいただければ幸いです。