Downloading a text file in ASP.NET is appending the web page HTML - asp.net

Thanks to help I previously received on this forum I was able to get my asp.net web site to download all kinds of files to the client browser.
For some odd reason, when I download text files, the HTML of the web page is being appended to the text! All other file types work fine!
Here's the code that's doing the download:
Public Sub DownloadBlob(ByVal Blob As Byte(), ByVal FileName As String, ByVal Response As HttpResponse)
Response.AddHeader("content-disposition", String.Format("attachment;filename={0}", FileName.Replace(" ", "_")))
Response.ContentType = String.Format("application/{0}", Path.GetExtension(FileName).Substring(1))
Response.BinaryWrite(Blob)
End Sub
and here's what's coming out of my text file:
Here is a test file
I hope it works!
:)
Saul
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
EEI - Case
</title><link rel="stylesheet" href="EEI.css" />
<script language="javascript" id="jssembleWare" src="sembleWare.js"></script>
</head>
<body>
<form name="form1" method="post" action="EEICaseEditForm.aspx" id="form1">
<div>
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTg4MDg2NjA2Ng8WAh4Uc2VtYmxlV2FyZV9QYWdlU3RhdGUymXsAAQAAAP////8BAAAAAAAAAAwCAAAARnN3UnVudGltZUFTUE5ldCwgVmVyc2lvbj0zLjUuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwMAwAAAEBzd1J1bnRpbWUsIFZlcnNpb249My41LjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsDAQAAABJU3lzdGVtLCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OQUBAAAAKHNlbWJsZVdhcmUuUnVudGltZS5BU1BOZXQuUGFnZU5hdmlnYXRpb24KAAAAE21vUHJldmlvdXNQYWdlU3RhdGUKbXNQYWdlTmFtZRJtc1JlZGlyZWN0UGFnZU5hbWUPbW9TdXBwbGllZFBhcnRzB21vTGlzdHMKbWJWaWV3T25seQdtbkRlcHRoCm1vUGFydFBvb2wKbW9TZXR0aW5ncxBtb1BlcnNpc3RlZEl0ZW1zBAEBBAMAAAQDBChzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0LlBhZ2VOYXZpZ2F0aW9uAgAAACdzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0LlN1cHBsaWVkUGFydHMCAAAA8wFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5EaWN0aW9uYXJ5YDJbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW3NlbWJsZVdhcmUuUnVudGltZS5BU1BOZXQuTGlzdFN0YXRlLCBzd1J1bnRpbWVBU1BOZXQsIFZlcnNpb249My41LjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV0BCBtzZW1ibGVXYXJlLlJ1bnRpbWUuUGFydFBvb2wDAAAAHFN5c3RlbS5Db2xsZWN0aW9ucy5IYXNodGFibGUtU3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLkxpc3REaWN0aW9uYXJ5BAAAAAIAAAAJBQAAAAYGAAAAFS9FRUlDYXNlRWRpdEZvcm0uYXNweAoJBwAAAAkIAAAAAAMAAAAJCQAAAAkKAAAACQsAAAABBQAAAAEAAAAJDAAAAAYNAAAAEi9DYXNlR3JpZEZvcm0uYXNweAoJDgAAAAkPAAAAAAIAAAAKCgoFBwAAACdzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0LlN1cHBsaWVkUGFydHMCAAAAD21vU3VwcGxpZWRQYXJ0cwxtb05hdmlnYXRpb24DBPYBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuRGljdGlvbmFyeWAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0LlN1cHBsaWVkUGFydCwgc3dSdW50aW1lQVNQTmV0LCBWZXJzaW9uPTMuNS4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dKHNlbWJsZVdhcmUuUnVudGltZS5BU1BOZXQuUGFnZU5hdmlnYXRpb24CAAAAAgAAAAkQAAAACQEAAAAECAAAAPMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuRGljdGlvbmFyeWAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0Lkxpc3RTdGF0ZSwgc3dSdW50aW1lQVNQTmV0LCBWZXJzaW9uPTMuNS4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dBAAAAAdWZXJzaW9uCENvbXBhcmVyCEhhc2hTaXplDUtleVZhbHVlUGFpcnMAAwADCJIBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuR2VuZXJpY0VxdWFsaXR5Q29tcGFyZXJgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0I9wFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5LZXlWYWx1ZVBhaXJgMltbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbc2VtYmxlV2FyZS5SdW50aW1lLkFTUE5ldC5MaXN0U3RhdGUsIHN3UnVudGltZUFTUE5ldCwgVmVyc2lvbj0zLjUuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGxdXVtdBwAAAAkSAAAABwAAAAkTAAAABQkAAAAbc2VtYmxlV2FyZS5SdW50aW1lLlBhcnRQb29sAgAAAAptblNlcXVlbmNlC21vUG9vbEl0ZW1zAAMIHFN5c3RlbS5Db2xsZWN0aW9ucy5IYXNodGFibGUDAAAAEwAAAAkUAAAABAoAAAAcU3lzdGVtLkNvbGxlY3Rpb25zLkhhc2h0YWJsZQcAAAAKTG9hZEZhY3RvcgdWZXJzaW9uCENvbXBhcmVyEEhhc2hDb2RlUHJvdmlkZXIISGFzaFNpemUES2V5cwZWYWx1ZXMAAAMDAAUFCwgcU3lzdGVtLkNvbGxlY3Rpb25zLklDb21wYXJlciRTeXN0ZW0uQ29sbGVjdGlvbnMuSUhhc2hDb2RlUHJvdmlkZXII7FE4PwEAAAAKCgsAAAAJFQAAAAkWAAAABQsAAAAtU3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkLkxpc3REaWN0aW9uYXJ5BAAAAARoZWFkB3ZlcnNpb24FY291bnQIY29tcGFyZXIEAAADPFN5c3RlbS5Db2xsZWN0aW9ucy5TcGVjaWFsaXplZC5MaXN0RGljdGlvbmFyeStEaWN0aW9uYXJ5Tm9kZQQAAAAICBxTeXN0ZW0uQ29sbGVjdGlvbnMuSUNvbXBhcmVyBAAAAAoAAAAAAAAAAAoBDAAAAAEAAAAKBhcAAAAOL01haW5NZW51LmFzcHgGGAAAAAAJGQAAAAkaAAAAAAEAAAAKCgoBDgAAAAcAAAAJGwAAAAkFAAAAAQ8AAAAIAAAABAAAAAkdAAAABwAAAAkeAAAABBAAAAD2AVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkRpY3Rpb25hcnlgMltbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbc2VtYmxlV2FyZS5SdW50aW1lLkFTUE5ldC5TdXBwbGllZFBhcnQsIHN3UnVudGltZUFTUE5ldCwgVmVyc2lvbj0zLjUuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGxdXQQAAAAHVmVyc2lvbghDb21wYXJlcghIYXNoU2l6ZQ1LZXlWYWx1ZVBhaXJzAAMAAwiSAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkdlbmVyaWNFcXVhbGl0eUNvbXBhcmVyYDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dCPoBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuS2V5VmFsdWVQYWlyYDJbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV0sW3NlbWJsZVdhcmUuUnVudGltZS5BU1BOZXQuU3VwcGxpZWRQYXJ0LCBzd1J1bnRpbWVBU1BOZXQsIFZlcnNpb249My41LjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsXV1bXQUAAAAJEgAAAAMAAAAJIAAAAAQSAAAAkgFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYy5HZW5lcmljRXF1YWxpdHlDb21wYXJlcmAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQAAAAAHEwAAAAABAAAABwAAAAP1AVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLktleVZhbHVlUGFpcmAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0Lkxpc3RTdGF0ZSwgc3dSdW50aW1lQVNQTmV0LCBWZXJzaW9uPTMuNS4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dBN/////1AVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLktleVZhbHVlUGFpcmAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0Lkxpc3RTdGF0ZSwgc3dSdW50aW1lQVNQTmV0LCBWZXJzaW9uPTMuNS4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAgAAAANrZXkFdmFsdWUBBCNzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0Lkxpc3RTdGF0ZQIAAAAGIgAAABNDb3VudHJ5T2ZPcmlnaW5MaXN0CSMAAAAB3P///9////8GJQAAAA5Bc3NpZ25lZFRvTGlzdAkmAAAAAdn////f////BigAAAAOQ2FzZVN0YXR1c0xpc3QJKQAAAAHW////3////wYrAAAAFFJlcXVlc3RlZFNlcnZpY2VMaXN0CSwAAAAB0////9////8GLgAAAAlEb2N1bWVudHMJLwAAAAHQ////3////wYxAAAAB0hpc3RvcnkJMgAAAAHN////3////wY0AAAAE1JlcXVlc3RlZEJ5VXNlckxpc3QJNQAAAAEUAAAACgAAAOxROD8eAAAACgoXAAAACTYAAAAJNwAAABAVAAAAAQAAAAY4AAAABlVzZXJJRBAWAAAAAQAAAAgJBwAAAAAAAAABGQAAAAcAAAAJOQAAAAkMAAAABBoAAADzAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkRpY3Rpb25hcnlgMltbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbc2VtYmxlV2FyZS5SdW50aW1lLkFTUE5ldC5MaXN0U3RhdGUsIHN3UnVudGltZUFTUE5ldCwgVmVyc2lvbj0zLjUuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGxdXQMAAAAHVmVyc2lvbghDb21wYXJlcghIYXNoU2l6ZQADAAiSAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkdlbmVyaWNFcXVhbGl0eUNvbXBhcmVyYDFbW1N5c3RlbS5TdHJpbmcsIG1zY29ybGliLCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OV1dCAAAAAAJOwAAAAAAAAABGwAAABAAAAANAAAACR0AAAAHAAAACT0AAAABHQAAABIAAAAHHgAAAAABAAAABAAAAAP1AVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLktleVZhbHVlUGFpcmAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0Lkxpc3RTdGF0ZSwgc3dSdW50aW1lQVNQTmV0LCBWZXJzaW9uPTMuNS4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAcL////f////Bj8AAAAEQ2FzZQlAAAAAAb/////f////BkIAAAAUUmVxdWVzdGVkU2VydmljZUxpc3QJQwAAAAG8////3////wZFAAAAEUN1cnJlbnRTdGF0dXNMaXN0CUYAAAABuf///9////8GSAAAABNDb3VudHJ5T2ZPcmlnaW5MaXN0CUkAAAAHIAAAAAABAAAAAQAAAAP4AVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLktleVZhbHVlUGFpcmAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0LlN1cHBsaWVkUGFydCwgc3dSdW50aW1lQVNQTmV0LCBWZXJzaW9uPTMuNS4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dBLb////4AVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLktleVZhbHVlUGFpcmAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0LlN1cHBsaWVkUGFydCwgc3dSdW50aW1lQVNQTmV0LCBWZXJzaW9uPTMuNS4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAgAAAANrZXkFdmFsdWUBBCZzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0LlN1cHBsaWVkUGFydAIAAAAGSwAAABNTZW5pb3JFdmFsdWF0b3JSb2xlCUwAAAAFIwAAACNzZW1ibGVXYXJlLlJ1bnRpbWUuQVNQTmV0Lkxpc3RTdGF0ZQoAAAAKbXNMaXN0TmFtZRFtb1NlbGVjdGVkUm93S2V5cw1tb1BhZ2VSb3dLZXlzDm1uTGlzdFJvd0NvdW50Dm1uUGFnZVJvd0NvdW50D21uUGFnZVJvd051bWJlchBtbkN1cnJlbnRQYWdlTnVtDG1zU29ydENvbHVtbg5tYlJldmVyc2VPcmRlchFtc1JlcG9zaXRpb25BbGlhcwEDAwAAAAABAAGOAVN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbc2VtYmxlV2FyZS5SdW50aW1lLkFTUE5ldC5Sb3dEYXRh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AQAAAAd2YWx1ZV9fAAgDAAAAAAAAAAEBcwAAAHIAAAAGtgAAABpFRUlDYXNlNjMzNzE2Nzk2NTg1MzEyNTAwNglqAAAACQkAAAAJuQAAAAm6AAAACbsAAAABRP///2b///8BAAAABr0AAAAHRUVJQ2FzZQFC////S////wAAAAABAXQAAAByAAAABr8AAAAJU3RhZmYsIDE1CWsAAAAJCQAAAAnCAAAACcMAAAAJxAAAAAE7////Zv///wIAAAAGxgAAAAVTdGFmZgE5////S////wAAAAABAXUAAAByAAAABsgAAAANU3lzdGVtVXNlciwgNwlsAAAACQkAAAAJywAAAAnMAAAACc0AAAABMv///2b///8CAAAABs8AAAAKU3lzdGVtVXNlcgEw////S////wAAAAABAXYAAAByAAAABtEAAAAZUGVyc29uNjMzNzE2Nzk2NTg1MzEyNTAwNwltAAAACQkAAAAJ1AAAAAnVAAAACdYAAAABKf///2b///8BAAAABtgAAAAGUGVyc29uASf///9L////AAAAAAEBdwAAAHIAAAAG2gAAAB1TeXN0ZW1Vc2VyNjMzNzE2Nzk2NDYwNjI1MDAwMwluAAAACQkAAAAJ3QAAAAneAAAACd8AAAABIP///2b///8BAAAABuEAAAAKU3lzdGVtVXNlcgEe////S////wAAAAABAXgAAAByAAAABuMAAAAZUGVyc29uNjMzNzE2Nzk2NDYwNjI1MDAwNAlvAAAACQkAAAAJ5gAAAAnnAAAACegAAAABF////2b///8BAAAABuoAAAAGUGVyc29uARX///9L////AAAAAAEBeQAAAHIAAAAG7AAAAAdSb2xlLCAxCXAAAAAJCQAAAAnvAAAACfAAAAAJ8QAAAAEO////Zv///wIAAAAG8wAAAARSb2xlAQz///9L////AAAAAAEBegAAAHIAAAAG9QAAABpFRUlDYXNlNjMzNzE2Nzk2NTg1MzEyNTAwNQlxAAAACQkAAAAJ+AAAAAn5AAAACfoAAAABBf///2b///8BAAAACb0AAAABA////0v///8AAAAAAQF7AAAAEgAAAAd8AAAAAAEAAAAEAAAAA/gBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuS2V5VmFsdWVQYWlyYDJbW1N5c3RlbS5TdHJpbmcsIG1z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
</div>
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
<!--Script to confirm btnEditDocument Action-->
I didn't include everything; you get the idea.
So, what is wrong with my code, and how do I prevent this from happening?

You need to call Response.End.
Public Sub DownloadBlob(ByVal Blob As Byte(), ByVal FileName As String, ByVal Response As HttpResponse)
Response.AddHeader("content-disposition", String.Format("attachment;filename={0}", FileName.Replace(" ", "_")))
Response.ContentType = "text/plain"
Response.BinaryWrite(Blob)
Response.End()
End Sub
Also notice I set the ContentType a little differently.

Related

Image not displaying on webpage just shows source

I am trying to dynamically display an image with text on it. There are quite a few examples of this ie Write Text On An Image in c#
For the time being this is the only thing on a visual studio generated empty winform page.
but I continue to get the same result regardless of the technique is use, so perhaps its a problem with my page?
My output page displays like this:
<%# Page Language="vb" AutoEventWireup="false" CodeBehind="index.aspx.vb" Inherits="testtext.index" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
</title></head>
<body>
<form method="post" action="./index.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="G30FF0+ZAHGhkQJeBgR+oRS6OrykggI6KG2KLa2Mf0lna5zKb83yvLWtkQfnBa4AEDqKkttFuBoZ1lWeDcgqUpLSg0hHsyoD0paxcB2U0Js=" />
</div>
<div>
<p><img src="data:image/PNG;Base64, �PNG���
IHDR���5������9堢���sRGB�������gAMA����
�a��� pHYs�������o�d����IDATHKՓ��0�;�9Nvq�lb����D� />
</div>
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="90059987" />
</div></form>
</body>
</html>
My code looks like this:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtmstrong textl">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<%Dim cls = New testtext.clsUtil %>
<p><img src="data:image/PNG;Base64, <%cls.MakeImage("Testing") %>" />
</div>
</form>
</body>
</html>
the function .MakeImage ends as follows:
'// SET ALIGNMENT
Dim format As StringFormat = New StringFormat
format.LineAlignment = StringAlignment.Center
'// DRAW THE FONT
Dim oMemStream As MemoryStream = New MemoryStream
g.DrawString(Text, oFont, fgBrush, rectF, format)
System.Web.HttpContext.Current.Response.ContentType = "image/png"
img.Save(oMemStream, ImageFormat.Png)
oMemStream.WriteTo(System.Web.HttpContext.Current.Response.OutputStream)
'// CLEAN UP
img.Dispose()
Return Nothing
End Function
The function .MakeImage appears to be working correctly returning the image but sadly no picture is displayed.
Can you see what I am doing wrong?
two things:
your output is not base64 encoded, and your page output you’ve listed doesn’t have a closing double-quote on src=“...
Let me know if you need code on how to resolve. Deal with base64 first, in case the current output is messing up the page output.
Cheers!
Added:
use Convert.ToBase64String(bytes) to encode your bytes into a Base64 string.
Or, if you want to continue to return bytes to the client, consider just putting an image URL in like src=“/images.ashx/testing", then setting up an ASHX handler to call your image-generating function. You can return bytes without encoding.

_doPostBack added twice. one by manual and one by gridview in asp.net

I have a page where i am rendering GridView. In GridView i have a CheckBox and once you check, uncheck, Jquery Dialog appears and i need a postback event on that dialog. so i am adding a manual postback on that page. everything is fine till gridview has only 1 page. as soon as gridview has more records, it add a _doPostBack method on page. so i now have a 2 _doPostBack method on page and nothing works because of this.
How can i define in my page that i do not want to add any _doPostBack method by any controls because i have already defined it manually?
Here is my HTML
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1">
<title>Store Management</title>
<script src="/js/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="/js/jquery-ui.min-1.10.1.js" type="text/javascript"></script>
<link href="/assets/styles/StorePortal/style-22012013.css" rel="stylesheet"
type="text/css" />
<link href="/assets/styles/StorePortal/jquery-ui.css" rel="stylesheet"
type="text/css" />
<link href="../App_Themes/AbleCommerce/ComponentArt.css" rel="stylesheet"
type="text/css" />
<link href="../App_Themes/AbleCommerce/print.css" rel="stylesheet" type=
"text/css" />
<link href="../App_Themes/AbleCommerce/style.css" rel="stylesheet" type=
"text/css" />
<link href="../App_Themes/AbleCommerce/webparts.css" rel="stylesheet" type=
"text/css" />
</head>
<body>
<form action=
"portal.aspx?q=bbaae796d951c95311f5ec3e599784079c6093ee&q1=COV" id=
"form1" method="post" name="form1">
<div>
<input id="__EVENTTARGET" name="__EVENTTARGET" type="hidden" value=
"" /> <input id="__EVENTARGUMENT" name="__EVENTARGUMENT" type=
"hidden" value="" />
</div><script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
<div>
<input id="__VIEWSTATEENCRYPTED" name="__VIEWSTATEENCRYPTED" type=
"hidden" value="" />
</div>
<script type="text/javascript"> --> this one is added by me manually
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
<div>
<input id="__EVENTTARGET" name="__EVENTTARGET" type="hidden" value=
"" /> <input id="__EVENTARGUMENT" name="__EVENTARGUMENT" type=
"hidden" value="" /> /// sOME CODE HERE
</div>
--> this one is added by me manually
</form>
</body>
</html>
Now, if i remove the _doPostBack added by me, gridview paging works. BUT when i have only 1 page in gridview, my event in jquery dialog does not work because it cant find _doPostBack.
ANSWER:
I have removed the _doPostBack() added by me and instead added this on my Page_Load() which adds a _doPostBack() even if there are no asp.net controls which requires this method.
ClientScript.GetPostBackEventReference(this, string.Empty);
BIG THANKS TO #Tim Schmelter for pointing to that LINK
I've had a similar problem, when trying to popup a dialog confirming a record deletion. This is the code I've used (jQuery UI dialog) and it works perfectly.
Don't add a new doPostBack. Instead, try to follow this idea. You can adapt it to fit your requirements:
// When the user tries to delete a record, show a confirmation.
$(".confirmationButton").click(function(e) {
// Stop the PostBack
e.preventDefault();
$(".confirmationDialog").dialog("open");
});
$(".confirmationDialog").dialog({
buttons: {
"No": function() {
$(this).dialog("close");
},
"Yes": function() {
$(this).dialog("close");
// User confirmed deletion, so carry on with the PostBack.
eval($("#ctl00_MainContentPlaceHolder_hdnBtnPostBack").val());
}
}
});
Somewhere on your code (when checking the page source), you'll find something like this:
<input id="ctl00_MainContentPlaceHolder_hdnBtnPostBack" type="hidden" value="__doPostBack('ctl00$MainContentPlaceHolder$btnDelete','')" name="ctl00$MainContentPlaceHolder$hdnBtnPostBack">
That's the object you will be using with eval().

How to play/pause a wav file in asp page

I need to play and pause a .wav file on an asp.net page, but I can't use flash, and it needs to be the lightest solution there could be.
I found how to play the sound, but I can't find a way to stop it.
this is my code: (with the element "embed" it's not working in IE, but with "bgsound" it's not working in Chrome)
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
var soundObject = null;
function PlaySound() {
if (soundObject != null) {
document.body.removeChild(soundObject);
soundObject = null;
}
soundObject = document.createElement("bgsound");
soundObject.setAttribute("src", "C:/sound1.wav");
soundObject.setAttribute("hidden", true);
soundObject.setAttribute("autostart", true);
document.body.appendChild(soundObject);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<input type = "button" onclick = "PlaySound()" value = "Play Sound" />
</form>
</body>
</html>
You can do this by using this namespace "Microsoft.DirectX.AudioVideoPlayback"
Here, an example --http://msdn.microsoft.com/en-us/library/bb324497(VS.85).aspx
This is possible using asp.net SoundPlayer Class
aspx page:
<asp:Button ID="Button1" runat="server" Text="Play" />
<asp:Button ID="Button2" runat="server" Text="Pause" />
HTML mark up you need to include this for previous versions,
<object data="sound1.wav"></object>
for the newer html5 you can use this:
<audio src="sound1.wav">
<p>Your browser does not support the audio element.</p>
</audio>
code behind file:
protected void Button1_Click(object sender, EventArgs e)
{
SoundPlayer playthewavfile = new SoundPlayer(#"C:/sound1.wav");
playthewavfile.Play();
}
protected void Button2_Click(object sender, EventArgs e)
{
SoundPlayer playthewavfile = new SoundPlayer(#"C:/sound1.wav");
playthewavfile.Stop();
}
EDIT:
If you want to do this purely with javascript and html try this:
I have not tested this, as I am very rusty using embed tag to parse audio file ever since html5 came out, you can try it and let me know if it works.
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function play() {
window.document.embeds[0].Play()
window.document.embeds[1].Play()
}
function stop() {
window.document.embeds[0].Stop()
window.document.embeds[1].Stop()
}
</SCRIPT>
</HEAD>
<BODY>
<EMBED SRC="sound1.wav" NAME="video" AUTOSTART="false">
<EMBED SRC= "sound1.wav" AUTOSTART="false">
<FORM>
<INPUT TYPE="BUTTON" VALUE="Play" onClick="play()">
<INPUT TYPE="BUTTON" VALUE="Pause" onClick="stop()">
</FORM>
</BODY>
</HTML>
It's not pretty, but I managed to terminate the sound like this.
function StopSound()
{
if (soundObject != null) {
soundObject.setAttribute("src", "");
soundObject = null;
}
}

Why is this leaking memory in ie 8?

edit 2 -
To recreate - (I hope)
Create an empty asp.net project, add a default.aspx, and an about.aspx
use this code for the default.aspx file:
http://pastebin.com/4Ri1BufM
and this for about.aspx
http://pastebin.com/Ni9dZL7c
Build, and run sieve against it. Click the button, then the link. Sieve should now list 1 memory leak.
This simple layout puts a server button inside a panel. If you click it, and then the "Leave" link, sIEve reports 1 memory leak:
http://localhost:2605/Default.aspx (1 reference)
<INPUT value="partial postback" type=submit name=ctl01 >
Aspx source:
<%# Page Title="Home Page" Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
Inherits="LeakTestProject._Default" %>
<html>
<head>
<title></title>
</head>
<body>
<form id="Form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button Text="partial postback" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
</form>
<a href="SomeOtherPage.aspx" >leave</a>
</body>
</html>
I've think I've tracked down a memory leak in my application to this source.
Would anyone be able to explain why this is happening, and what to do to fix it?
(Note - there is no server side code running)
edit-
Here is the generated html:
<html>
<head>
<title></title>
</head>
<body>
<form method="post" action="Default.aspx" id="Form1">
<div class="aspNetHidden">
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTUzNzM3OTMxMmRk27mKixZYS2MtHiuw7SZF6+1A/CkWRnnarcN2a05yCJs=" />
</div>
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['Form1'];
if (!theForm) {
theForm = document.Form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
<script src="/WebResource.axd?d=_lxNoU5aYdEC_WWnUhGTN0VgFQnwFJ1fkZBkPhUGNITY1Tt87f4CGSPd9dhq2TD9I8lv5ljTGi956KpbHSLq3ebld0t7nKLON7Hc04CCAwA1&t=634525784292792916" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=0VE3fsyoY2cTFnat6m0YjE4OCCjVV0jmjSC6wigMBEOHyKW8kewBrhtJnBFIn73VSWcGW45QXwelC5m-1iZoornC8qWpZ-kXP-Y38e49qW1TbssOgo419ZWtVHSVmIpSg9CvXOQzUBClAjuHORyX5Q2&t=ffffffffbd2983fc" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
if (typeof(Sys) === 'undefined') throw new Error('ASP.NET Ajax client-side framework failed to load.');
//]]>
</script>
<script src="/ScriptResource.axd?d=DBlWOXkmp0ycsSicGEZhACmLuhW1VF8BppK-Uj8ijyjhFxx7MTG8NW0gLl3IJ6TyEo2rAMfLCQ9rO_bk2wDCcpyT3Df6CN-TLMAA575gUNAjTSzC6U1koagV2FYRmu4TNsAgoEjhkN6fJX3lENf7Bw2&t=ffffffffbd2983fc" type="text/javascript"></script>
<div class="aspNetHidden">
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAgLZvOXNBgKiwImNCx8fSMXEwq+V+5yrnoaTcidPwoJw3ebm6DJQ1D3fVVAL" />
</div>
<script type="text/javascript">
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('ScriptManager1', 'Form1', ['tUpdatePanel1','UpdatePanel1'], [], [], 90, '');
//]]>
</script>
<div id="UpdatePanel1">
<input type="submit" name="ctl01" value="partial postback" />
</div>
</form>
<a href="About.aspx" >leave</a>
</body>
</html>
According to http://www.codeproject.com/KB/ajax/jqmemleak.aspx there is a memory leak that sounds a lot like what you are experiencing.
See "Iteration 2 - Memory Leak"
Using a tool called 'SIEve' he states 'You can see that every time I click refresh, it creates a new set of input elements without destroying the previous ones. '
His fix was a JQuery plugin that calls into the Update panel cleanup hooks. You could potentially try this?
(function($) {
$.fn.Disposable = function(cln) {
return this.each(function() {
var el = this;
if (!el.dispose) {
el.dispose = cleanup; // will be called by
// Microsoft for cleanup
$(window).bind("unload", cleanup);
}
function cleanup() {
if (!el)
return;
$(el).unbind();
$(window).unbind("unload", cleanup);
el.dispose = null;
el = null;
};
});
};
})(jQuery);
function add() {
$get('res').value =
parseInt($get('i1').value) + parseInt($get('i2').value);
}
Sys.Application.add_load(function() {
$('.num').change(add).Disposable();
});
could you please try this change:
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<script>
Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(my_init);
function my_init() {
document.getElementById("UpdatePanel1").innerHTML = "";
}
</script>

Need to understand why upload isn't happening in this case?

I've an html file with the below markup:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Upload Page</title>
</head>
<body>
<form id="frmUpload" action="UploadHandler.ashx" method="post" enctype="multipart/form-data">
<input type="file" /><br />
<br />
<input id="Submit1" type="submit" value="Submit" />
</form>
</body>
</html>
I have a handler (ashx) file to handle the upload which goes like this:
<%# WebHandler Language="VB" Class="UploadHandler" %>
Imports System
Imports System.Web
Imports System.Diagnostics
Public Class UploadHandler : Implements IHttpHandler
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
Dim str As String
str = "EncType = " & context.Request.ContentType
str &= vbCrLf
str &= "File Count = " & context.Request.Files.Count
context.Response.ContentType = "text/plain"
context.Response.Write(str)
End Sub
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property
End Class
When I am working with the html page, I select a file and do a submit, I get a response like this:
EncType = multipart/form-data; boundary=---------------------------7d9232a130656
File Count = 0
I was expecting the file count to be 1 here but it is 0...what is wrong?
Try giving a name to your input tag:
<input type="file" name="fileToUpload" />
You don't have a name attribute on your file <input>:
<input type="file" name="myFile"/><br />

Resources