Web サーバーにローカルに保存されているファイルへのリンクを含むダウンロード ページがあります。ユーザーがテキスト ファイルを開くときは問題ありませんが、IE または Firefox で Office ファイルを開いて表示されるダイアログから [開く] を選択すると、ASP は新しいセッションを作成します。
私の単純化されたコントローラーの方法は次のとおりです。
<HttpGet()>
<AppAuthorize(Domain.Security.TransactionId.Download)>
Public Function Download(fileName As String) As ActionResult
' fileName example: C:\ProgramData\MyCompany\MyApp\SomeFile.txt
Return New FilePathResult(fileName, "application/octet-stream")
End Function
デバッグは、ブラウザーで [開く] をクリックするとすぐに、Global.asax Session_Start() イベントがトリガーされることを示しています。
ファイルを保存してから IE で表示すると、新しいセッションは作成されません。上の図のように [開く] ボタンをクリックした場合にのみ問題になります。
これはなぜですか、どうすれば防ぐことができますか?
中心的な問題は、新しいセッションが開始され、ユーザーが有効なフォーム認証 Cookie を持っていることをアプリが確認すると、IIS が再起動されたと見なされ、ユーザーの Cookie が削除されることです。そのため、ユーザーが Word ドキュメントを開くたびに、アプリからログアウトされます。