我试图编写一个代码,通过在C#中使用WebClient
来下载XLSX(Excel 2007+)文件。问题是,虽然下面的(标准)代码可以从互联网上下载其他文件,但它不能下载这个文件,它是从ASPX页面的响应中动态生成的。WebClient无法下载生成的文件从写入到响应
这里是我的代码:
public bool Download(string url, string targetFileName, out DownloadFinalState finalState)
{
finalState = DownloadFinalState.InitialState;
try
{
Random rnd = new Random();
string fname = Directory.GetCurrentDirectory() + "\\" + rnd.Next(10000, 99999) + targetFileName;
WebClient Client = new WebClient();
var ua = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
Client.Headers.Add(HttpRequestHeader.UserAgent, ua);
Client.DownloadFile(url, fname);
if (File.Exists(fname))
{
finalState = DownloadFinalState.FileDownloadedSuccessfully;
}
else
{
finalState = DownloadFinalState.NoExceptionButNoFile;
}
return true;
}
catch (Exception ex)
{
finalState = DownloadFinalState.ExceptionRaised;
return false;
}
}
,这里是该文件的URL(这是公开的): http://www.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0
我也试过在头去除剂,也试过HttpWebRequest
为基础的方法,但他们都没有工作。在上述代码的情况下,文件以比实际文件小4KB的方式下载,并且是奇怪的不可读(用于MS Excel)格式。
@Soner Gonul:您的修改使我的问题从最新的问题中消失。 – Farshid
这不仅仅是问题出现在生成此文件的服务器上。它只是从它中删除一些字节。如果不显示正在生成文件的服务器端代码,很难提供帮助。通常这是由于不恰当地部署一些IDisposable资源造成的。 –
@DarinDimitrov:我自己提到过这种情况(从ASPX页面的响应中即时生成),这不是我的服务器,这是我想要从中下载文件的服务器。 – Farshid