private void DownloadEmbeddedResource(
string resourceName, Assembly resourceAssembly, string downloadFileName )
{
using ( Stream stream = resourceAssembly.GetManifestResourceStream( resourceName ) )
{
if ( stream != null )
{
Response.Clear();
string headerValue = string.Format( "attachment; filename={0}", downloadFileName );
Response.AppendHeader( "Content-Disposition:", headerValue );
Response.AppendHeader( "Content-Length", stream.Length.ToString() );
Response.ContentType = "text/xml";
var byteBuffer = new Byte[1];
using ( var memoryStream = new MemoryStream( byteBuffer, true ) )
{
while ( stream.Read( byteBuffer, 0, byteBuffer.Length ) > 0 )
{
Response.BinaryWrite( memoryStream.ToArray() );
Response.Flush();
}
}
Response.End();
}
}
}
我最终使用了上面的这种方法。感谢您在语法 tsilb 方面帮助我。JohannesH,如果资源不是来自不同的程序集,我会使用你的建议(对不起,我应该在我原来的问题中澄清这一点)。
上面的代码有效,但我遇到了一个相当奇怪的问题......方法完成并下载完成后,页面似乎仍然没有恢复活力,鼠标仍然处于沙漏模式,就像它仍然认为工作正在进行一样完毕。关于如何补救的任何想法?
再次感谢你的帮助!