C# BinaryWrite()适用于一个页面,而不是另一个页面
我在类库中有一个帮助函数,用于创建和提供自定义PDF:C# BinaryWrite()适用于一个页面,而不是另一个页面,c#,asp.net,download,httpresponse,C#,Asp.net,Download,Httpresponse,我在类库中有一个帮助函数,用于创建和提供自定义PDF: byte[] file = GetPdfBytesFromHtmlString( htmlCodeToConvert ); System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; response.Clear(); response.AddHeader( "Content-Type", "binary/octet-stream" ); resp
byte[] file = GetPdfBytesFromHtmlString( htmlCodeToConvert );
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.Clear();
response.AddHeader( "Content-Type", "binary/octet-stream" );
response.AddHeader( "Content-Disposition", "attachment; filename=" + filename + "; size=" + file.Length.ToString() );
response.Flush();
response.BinaryWrite( downloadBytes );
response.Flush();
response.End();
当这段代码在一个页面上执行时,一切正常。另一个页面基本相同,唯一的区别是要写入PDF的HTML输出,我已经验证了它是否正常工作。然而,什么也没有发生。我已经仔细阅读了代码,它只是顺其自然,但浏览器没有提示下载
我知道我漏掉了很多代码,但因为它在一个实例中工作,而不是在另一个实例中工作,所以我很难找到解决方案。您创建的字节数组在代码中称为file,但您二进制编写了“downloadbytes”-这就是问题所在吗?我真的不想回答自己的问题,因为这意味着我在问之前没有做足够的研究。然而,我在回顾它时意识到我只在Firefox中测试过。在IE中运行它暴露了一个脚本错误,其中包含文本“error parsing near'%PDF-1.4%”,我在搜索时看到了该文本,但没有跟进 问题是页面不工作时使用了AJAX更新面板,当我声明代码相同时,我没有意识到这一点。导出按钮单击代码相同,但标记不同
中的第二个回复包含一些附加信息和解决方法。如果问题是更新面板,那么您所需要做的就是为调用函数的控件添加完整的回发触发器。我可以通过在更新面板中添加触发器来解决此问题
<Triggers>
<asp:PostBackTrigger ControlID="YourControlID" />
</Triggers>
“几乎完全相同”与“不完全相同”的外观可疑。非工作版本中的数据实际上是二进制数据(如预制作的pdf)还是您只是试图使用BinaryWrite
写入的文本数据?“可疑”“这是正确的。请看下面我的回答。是我的错,为了清楚起见,我更改了变量名,但没有在任何地方更改它。