Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Microsoft Edge忽略内容处置响应头';s文件名属性?_C#_Microsoft Edge_Httpresponsemessage - Fatal编程技术网

C# Microsoft Edge忽略内容处置响应头';s文件名属性?

C# Microsoft Edge忽略内容处置响应头';s文件名属性?,c#,microsoft-edge,httpresponsemessage,C#,Microsoft Edge,Httpresponsemessage,我正在向浏览器发送一个文件,以便在本地保存。这在除Microsoft Edge之外的所有浏览器中都可以正常工作,在Microsoft Edge中,它将文件名替换为guid。该文件必须使用特定的文件名下载,对此问题是否有解释或解决方法?我的回答“不要使用Edge”将被拒绝 var response = new HttpResponseMessage(HttpStatusCode.OK) { Content = new ByteArrayCon

我正在向浏览器发送一个文件,以便在本地保存。这在除Microsoft Edge之外的所有浏览器中都可以正常工作,在Microsoft Edge中,它将文件名替换为guid。该文件必须使用特定的文件名下载,对此问题是否有解释或解决方法?我的回答“不要使用Edge”将被拒绝

        var response = new HttpResponseMessage(HttpStatusCode.OK)
        {
            Content = new ByteArrayContent(CreateFile(fileContents))
        };
        response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
        response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
        {
            FileName = string.Concat(fileName, ".xlsx")
        };

我在Edge上也遇到了同样的问题,当用户单击下载.ai文件时,它会自动打开为.pdf文件,而不是下载.ai文件

ContentDisposition是正确的,在所有浏览器上都能很好地工作,但是Edge似乎出于某种原因忽略了这个标题

经过长时间的调查和尝试,我得出了两种解决方案:
-始终以Zip文件的形式下载您的文件(这不是我的选项,我觉得这在移动设备上是不可接受的)
-将添加到下载文件链接,并确保属性值具有文件名。(这解决了edge上的问题,在所有其他浏览器上都可以正常工作)


关于属性的更多信息:

这似乎是Edge中的一个长期缺陷,目前尚未修复: