【发布时间】:2023-03-28 07:12:01
【问题描述】:
我们有一个相当老的 asp.net webforms 站点,它使用 asp.net 链接按钮来允许用户下载文件。我们最初将其作为简单的 a href,但我们必须在服务器端处理按钮单击事件才能运行一些后端代码。在 chrome 中一切正常,但是在 IE(我们正在运行 IE 11)中,每当您使用此链接按钮单击下载文件时,您都会收到以下客户端错误:
Error: The value of the property '__doPostBack' is null or undefined, not a Function object
我们的后端代码甚至没有被触发,所以我们知道这不是服务器端错误,因为调试器甚至没有命中。我们进行了一些搜索以查看可能导致此问题的原因,并且大多数人提到您需要在服务器上安装 .net 4.5。但是我们已经安装了 .net 4.5,并且我们遇到过其他帖子,它们有类似的问题,但根本不适用于我们。
我正在尝试帮助另一个团队解决此问题,但我们对此无能为力。链接按钮的定义很简单:
<asp:LinkButton runat="server" ID="lbName2" Target="_blank" OnClick="DownloadFile_Click"></asp:LinkButton>
OnClick 事件只是一些服务器端代码,但我们甚至没有点击服务器端代码,但如果它有帮助,这里是代码:
protected void DownloadFile_Click(object sender, EventArgs e)
{
var fileName = lbName2.Text;
string newFileName;
var serverPath = HttpContext.Current.Server.MapPath(hdnParentDocumentAbsolutePath.Value);
//get starting point of version within file name
//for instance mydocument(v1.0).docx
int index = fileName.IndexOf("(v");
if (index > 0)
{
//found a version number, strip it out.
var name = fileName.Substring(0, index);
int index2 = fileName.IndexOf(").");
var extension = fileName.Substring(index2 + 2);
newFileName = name + "." + extension;
}
else
{
newFileName = fileName;
}
//download the file
FileInfo file = new FileInfo(serverPath + "\\" + fileName);
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + newFileName);
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.WriteFile(file.FullName);
Response.End();
}
当我们单击链接按钮时,我们得到脚本错误,然后我们在 IE 中得到 This page can't be displayed 错误。它应该只是下载文件。同样,这在 chrome 和 ff 中可以正常工作,但在 IE11 中则不行。
【问题讨论】:
-
在黑暗中野蛮刺伤,但您是否启用了 BrowserSync?
-
内网站点?是否处于兼容模式(通常是哪些内网站点)?
-
可以this帮忙吗?
-
您是否在兼容模式下运行 IE11?如果没有,如果您为旧版本启用它怎么办?它解决了问题吗? (如果您应该插入 metatag x-ua compatible 以强制兼容,而不是仅针对您网站的页面启用 - 不是针对在浏览器中打开的所有文档)
-
这不是兼容模式问题,因为我们也对此进行了测试。我们尝试启用兼容模式同样的问题。
标签: javascript c# asp.net