1

共有ホスティング サービスにデプロイされた 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 にデプロイしたときには、この動作は経験しませんでした (ただし、他にも問題がありました)。別のホストに切り替えたときに発生し始めました。

このトピックに関する情報へのポインタをいただければ幸いです。

4

1 に答える 1

3

数秒間アイドル状態のときに、ホストがサーバーの AppPool を強制終了している可能性があります。

アプリの ShutDown イベントをログに記録して、問題があるかどうかを確認します: http://weblogs.asp.net/scottgu/archive/2005/12/14/433194.aspx

于 2012-09-21T19:59:21.943 に答える