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、リソースがまだ別のアセンブリから来ていない場合は、あなたの推奨事項を使用していました(申し訳ありませんが、元の質問でそれをクリアする必要がありました)。
上記のコードは機能しますが、かなり奇妙な問題が発生しています...メソッドが完了してダウンロードが終了した後、ページはまだ生き返っていないようで、マウスはまだ作業が行われていると思われる砂時計モードのままです終わり。それを修正する方法について何か考えはありますか?
あなたのご親切に感謝します!