C# ftp文件下载在本地主机上工作,但在服务器上不工作

C# ftp文件下载在本地主机上工作,但在服务器上不工作,c#,ftp,download,C#,Ftp,Download,如果没有任何真正的细节,这可能需要在生产服务器上设置Mime类型 这也可能是由于您和服务器之间可能存在透明代理筛选策略 同样,您确实应该通过Fiddler进行细粒度跟踪,以查看服务器实际返回的内容以及请求是否成功完成 假设这是一台IIS服务器,查看服务器事件日志还可以告诉您应用程序池是否正在崩溃并重新启动,这看起来似乎没有什么问题,但响应不正确。如果没有任何实际细节,这可能必须在生产服务器上进行Mime类型设置 string HostName = System.Configuration.Con

如果没有任何真正的细节,这可能需要在生产服务器上设置Mime类型

这也可能是由于您和服务器之间可能存在透明代理筛选策略

同样,您确实应该通过Fiddler进行细粒度跟踪,以查看服务器实际返回的内容以及请求是否成功完成


假设这是一台IIS服务器,查看服务器事件日志还可以告诉您应用程序池是否正在崩溃并重新启动,这看起来似乎没有什么问题,但响应不正确。

如果没有任何实际细节,这可能必须在生产服务器上进行Mime类型设置

string HostName = System.Configuration.ConfigurationSettings.AppSettings["HostName"];
string strUser = System.Configuration.ConfigurationSettings.AppSettings["BasicAuthenticationUser"];
string strPWD = System.Configuration.ConfigurationSettings.AppSettings["BasicAuthenticationPWD"];

strFile = "9788191073072.zip";

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(HostName + strFile);
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential(strUser, strPWD);
request.UsePassive = true;
request.UseBinary = true;
request.KeepAlive = false;

FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();

Response.AddHeader("content-disposition", "attachment;filename=" + strFile);

byte[] buffer = new byte[2 * 1024];
int read;

while ((read = responseStream.Read(buffer, 0, buffer.Length)) > 0) { Response.OutputStream.Write(buffer, 0, read); }

responseStream.Close();
response.Close();
这也可能是由于您和服务器之间可能存在透明代理筛选策略

同样,您确实应该通过Fiddler进行细粒度跟踪,以查看服务器实际返回的内容以及请求是否成功完成



假设这是一台IIS服务器,查看服务器事件日志还可以告诉您应用程序池是否正在崩溃并重新启动,这看起来好像没有什么问题,但响应不正确。

您需要指定哪些不工作?如果有异常,将引发什么异常?第四行的strFile似乎也缺少变量类型。我的代码在本地系统上运行良好。但在发布网站后的服务器上,我的代码不起作用。无异常无错误文件未下载当从服务器请求时,您是否尝试使用Fiddler跟踪详细信息?也许原始响应流中有一条线索。服务器事件日志可能也有一些线索。谢谢Maverik,现在我的代码正在运行:)不客气!如果你能在答案中张贴(并将你的答案标记为“答案”),也许会对其他人有所帮助。你到底出了什么问题,以及你是如何解决的,以便其他人将来能从中受益。你需要具体说明什么不起作用?如果有异常,将引发什么异常?第四行的strFile似乎也缺少变量类型。我的代码在本地系统上运行良好。但在发布网站后的服务器上,我的代码不起作用。无异常无错误文件未下载当从服务器请求时,您是否尝试使用Fiddler跟踪详细信息?也许原始响应流中有一条线索。服务器事件日志可能也有一些线索。谢谢Maverik,现在我的代码正在运行:)不客气!如果你能在答案中留言(并将你的答案标记为“答案”),也许会对其他人有所帮助。你到底出了什么问题,以及你是如何解决的,这样其他人将来才能从中受益。但这只会发生在zip文件中。我下载了mp3和其他文件,一切正常,但只有zip文件不起作用……MIME类型/文件类型过滤是最可能的罪魁祸首。你能通过浏览器直接下载同一个文件吗?但它只能通过zip文件下载。我下载了mp3和其他文件,一切正常,但只有zip文件不起作用……MIME类型/文件类型过滤是最可能的罪魁祸首。你能通过浏览器直接下载同一个文件吗?你可以把它添加到你的问题中,如果它是对问题的编辑,我想这就是答案。我注意到他现在已经在代码中添加了流刷新和内容类型。希望这能帮助其他人。你可以把它添加到你的问题中,如果它是对问题的编辑,我想这就是答案。我注意到他现在已经在代码中添加了流刷新和内容类型。希望这能帮助其他人。
string HostName = System.Configuration.ConfigurationSettings.AppSettings["HostName"];
string strUser = System.Configuration.ConfigurationSettings.AppSettings["BasicAuthenticationUser"];
string strPWD = System.Configuration.ConfigurationSettings.AppSettings["BasicAuthenticationPWD"];

strFile = "9788191073072.zip";

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(HostName + strFile);
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential(strUser, strPWD);
request.UsePassive = true;
request.UseBinary = true;
request.KeepAlive = false;

FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();

Response.AddHeader("content-disposition", "attachment;filename=" + strFile);

byte[] buffer = new byte[2 * 1024];
int read;

while ((read = responseStream.Read(buffer, 0, buffer.Length)) > 0) { Response.OutputStream.Write(buffer, 0, read); }

responseStream.Close();
response.Close();