加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 下载文件时ASP.MVC会话丢失

发布时间:2020-12-16 03:29:00 所属栏目:asp.Net 来源:网络整理
导读:我有一个下载页面,其中包含指向本地存储在Web服务器上的文件的链接.当用户打开文本文件时,一切都很好,但当他们打开Office文件并从IE或Firefox中生成的对话框中选择“打开”时,ASP会创建一个新会话. 我简化的控制器方法是: HttpGet()AppAuthorize(Domain.Sec
我有一个下载页面,其中包含指向本地存储在Web服务器上的文件的链接.当用户打开文本文件时,一切都很好,但当他们打开Office文件并从IE或Firefox中生成的对话框中选择“打开”时,ASP会创建一个新会话.

我简化的控制器方法是:

<HttpGet()>
<AppAuthorize(Domain.Security.TransactionId.Download)>
Public Function Download(fileName As String) As ActionResult
    ' fileName example: C:ProgramDataMyCompanyMyAppSomeFile.txt
    Return New FilePathResult(fileName,"application/octet-stream")
End Function

调试显示,只要在浏览器中单击“打开”,就会触发Global.asax Session_Start()事件.

如果保存文件,然后在IE中查看它,则不会创建新会话.如果单击上图中的“打开”按钮,则只会出现问题.

为什么这样,我该如何预防呢?

核心问题是当我的应用程序看到新会话启动且用户具有有效的表单身份验证cookie时,它会假定IIS已重新启动并删除用户的cookie.因此,每次用户打开Word文档时,他们都会从应用程序中注销.

解决方法

在Internet Explorer中单击DOC链接时,会将其移交给Word.这意味着Word会进行下载,而不是IE.因此,有一个新的“浏览器连接”,将创建一个新的会话,因为它实际上不是IE正在进行下载.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读