【发布时间】:2018-05-04 04:37:16
【问题描述】:
在我的网站中,我列出了 ftp 文件夹文件,当用户单击下载按钮时,我调用下面的代码,然后将文件下载到他们的 C 盘。但是我收到错误访问路径“C:\myvideo.flv”被拒绝。
代码正在服务器上运行,需要保存到本地 PC 驱动器。
ASP.NET 无权访问请求的资源。考虑向 ASP.NET 请求标识授予对资源的访问权限。 ASP.NET 有一个基本进程标识(通常是 IIS 5 上的 {MACHINE}\ASPNET 或 IIS 6 和 IIS 7 上的网络服务,以及 IIS 7.5 上配置的应用程序池标识),如果应用程序不是模拟的,则使用该标识。如果应用程序通过 模拟,则身份将是匿名用户(通常是 IUSR_MACHINENAME)或经过身份验证的请求用户。
我是否错过了FtpWebRequest 的某个时间或其他原因导致此问题。
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(FTPRequest_Host + "myvideo.flv");
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.KeepAlive = true;
request.UsePassive = true;
request.UseBinary = true;
request.Credentials = new NetworkCredential(FTPRequest_Username, FTPRequest_Password);
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
using (FileStream writer = new FileStream(@"C: \\" + "myvideo.flv", FileMode.Create, FileAccess.ReadWrite))
{
long length = response.ContentLength;
int bufferSize = 2048;
int readCount;
byte[] buffer = new byte[2048];
readCount = responseStream.Read(buffer, 0, bufferSize);
while (readCount > 0)
{
writer.Write(buffer, 0, readCount);
readCount = responseStream.Read(buffer, 0, bufferSize);
}
}
reader.Close();
response.Close();
【问题讨论】:
-
您是否以管理员身份运行您的应用程序?您可以将文件直接放在 C:\ 作为您运行的用户吗?没有来自 Windows 的任何提示?
-
C:和两个 `\` 字符之后确实有一个奇怪的空格。我不确定这是问题的根源还是其他原因...... -
正确的本地路径应该是
@"C:\myvideo.flv",因为它包含在文字字符串中。此外,C:驱动器在 Windows 7 或更高版本中被视为系统驱动器,您需要提升权限(即以管理员身份运行 VS)才能保存在C:驱动器中。
标签: c# asp.net-mvc ftpwebrequest