I have an ExcelResult action result that returns Microsoft Excel documents, based off the Stephen Walther tip. Basically it just writes a stream out to the Response. When debugging VS 2010 (ASP.NET Dev Server), it runs fine, but when I run it on an IIS 6 box, I get the following error:
The view ‘GenerateExcel’ or its master was not found. The following locations were searched:
~/Views/Home/GenerateExcel.aspx
~/Views/Home/GenerateExcel.ascx
~/Views/Shared/GenerateExcel.aspx
~/Views/Shared/GenerateExcel.ascx
There is no associated View, and therefore no file, but there shouldn’t have to be. What am I doing wrong?
UPDATE
By simply returning void instead of an ActionResult, I no longer have this issue. Instead of returning the ExcelResult, I’m explicitly calling it’s ExecuteResult method, which is writing to the output stream.
Before
public ActionResult GenerateExcel()
{
return this.Excel(parameters);
}
After
public void GenerateExcel()
{
ExcelResult excelResult = this.Excel(parameters);
excelResult.ExecuteResult(null);
}
After that, I had security issues with my NTLM authentication, but they ‘went away’ (meaning I expect them to come back). For now, though, everything is working properly.
Make sure your action method does not return a ActionResult: