MVC Controller Using Response Stream
Try returning one the FileResult
s: http://msdn.microsoft.com/en-us/library/system.web.mvc.fileresult.aspx
Also see this example: http://forums.asp.net/t/1491579.aspx/1
I have found one possible solution to this problem. You can simply define the action method to return an EmptyResult() and write directly to the response stream. For example:
public ActionResult RobotsText() {
Response.ContentType = "text/plain";
Response.Write("User-agent: *\r\nAllow: /");
return new EmptyResult();
}
This seems to work without any problems. Not sure how 'MVC' it is...
I spent some time on the similar problem yesterday, and here's how to do it right way:
public ActionResult CreateReport()
{
var reportData = MyGetDataFunction();
var serverPipe = new AnonymousPipeServerStream(PipeDirection.Out);
Task.Run(() =>
{
using (serverPipe)
{
MyWriteDataToFile(reportData, serverPipe)
}
});
var clientPipe = new AnonymousPipeClientStream(PipeDirection.In,
serverPipe.ClientSafePipeHandle);
return new FileStreamResult(clientPipe, "text/csv");
}