I've been looking into achieving this capability with minimum amount of code for sometime; Using URL access in sQL Server Reporting Services to render the file in browser without having a save as popup nor using the Report Viewer Control. Just a plain old binary data streaming into broswer IOStream. I tried WebClient but it didn't work very well; For fine grained control on timing, since report generation could take longer, HTTPWebRequest and HTTPWebResponse are probably the best bet here.
Dim ReportUrl As String = "http:///ReportServer?%2f%&rs%3aCommand=Render&rs%3AFormat=PDF"
Dim ReportWebRequest As HttpWebRequest = CType(WebRequest.Create(ReportUrl), HttpWebRequest)ReportWebRequest.Timeout = 10000ReportWebRequest.Credentials = CredentialCache.DefaultCredentials
Dim ReportWebResponse As HttpWebResponse = CType(ReportWebRequest.GetResponse(), HttpWebResponse)Dim ReportResponseStream As StreamReader = New StreamReader(ReportWebResponse.GetResponseStream(), New UnicodeEncoding)Dim objMemoryStream As New MemoryStream(New UnicodeEncoding().GetBytes(ReportResponseStream.ReadToEnd()))
Response.Clear()Response.AddHeader("Accept-Header", objMemoryStream.Length.ToString())Response.ContentType = "application/pdf"Response.OutputStream.Write(objMemoryStream.ToArray(), 0, Convert.ToInt32(objMemoryStream.Length))ReportResponseStream.Close()Response.Flush()
Try Response.End()CatchEnd Try