雖然我可以在調試模式下創建rdlc報告,但遇到錯誤「訪問路徑'C:\ xxx.xlsx'被拒絕。」在Web上尋找解決方法之後,我發現許多解決方案都建議爲IIS用戶授予C驅動器權限。但是,爲渲染報告授予整個驅動器似乎並不明智。那麼,如何改變這個渲染位置,例如C:\ inetpub \ MyApplication?另一方面,我認爲報告方面不需要設置,即ReportViewer.ProcessingMode = ProcessingMode.Local;
或更改rdlc屬性「Build Action」,「Copy Output Directory」?如何在IIS上爲rdlc報告設置自定義位置?
注意:我不希望報告在客戶端的機器上呈現,因爲他們中的一些人無權在C:\下編寫任何位置,我認爲在IIS位置生成報告要好得多。是不是?
那麼,在這種情況下最好的解決方案是什麼?
更新:我怎麼能修改此方法,以便它只是讀取流爲Excel withou寫呢?
public static void StreamToProcess(Stream readStream)
{
var writeStream = new FileStream(String.Format("{0}\\{1}.{2}", Environment.GetFolderPath(Environment.SpecialFolder.InternetCache), "MyFile", "xlsx"), FileMode.Create, FileAccess.Write);
const int length = 16384;
var buffer = new Byte[length];
var bytesRead = readStream.Read(buffer, 0, length);
while (bytesRead > 0)
{
writeStream.Write(buffer, 0, bytesRead);
bytesRead = readStream.Read(buffer, 0, length);
}
readStream.Close();
writeStream.Close();
Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.InternetCache) + "\\" + "file" + "." + "xlsx");
}
爲什麼要呈現文件?只需從MemoryStream中返回一個FileStreamResult並讓瀏覽器處理它。 –
你能舉個例子嗎? –