我在ASP.NET Web服务中有一个简单的类。它在我的本地系统上运行良好,甚至在我设置的开发环境中运行,但是当我尝试在生产服务器上发送文件时,我收到以下错误:
Exception Error: The underlying provider failed on Open.
以下是被调用的代码:
public class FTPHelper
{
public static string SendFile(string ftpuri, string username, string password, string ftppath, string filename, byte[] datatosend)
{
if (ftppath.Substring(ftppath.Length - 1) != "/")
{
ftppath += "/";
}
FtpWebRequest ftp = (FtpWebRequest) FtpWebRequest.Create( ftpuri + ftppath + filename);
ftp.Method = WebRequestMethods.Ftp.UploadFile;
ftp.Credentials = new NetworkCredential(username, password);
ftp.UsePassive = true;
ftp.ContentLength = datatosend.Length;
Stream requestStream = ftp.GetRequestStream();
requestStream.Write(datatosend, 0, datatosend.Length);
requestStream.Close();
FtpWebResponse ftpresponse = (FtpWebResponse)ftp.GetResponse();
return ftpresponse.StatusDescription;
}
}
如何解决此问题。服务器是在Windows 2008 Server上运行的IIS 7.5。我正在使用.NET 4.0。有没有一个简单的原因,为什么FtpWebResponse不起作用?
如果这是一个安全问题,那么它有什么办法吗?我需要立即开始工作。
答案 0 :(得分:0)
这是一个安全问题,网站运行的用户没有建立FTP连接的权限。我是程序员,而不是网站管理员,所以我不知道如何实现这一目标。在IIS上搜索微软的IIS帮助之后,我终于完成了它。更改用户的解决方案是在SuperUser上:
https://superuser.com/q/307168/68967
如果有人有更好的解决方案,请回复。如果有人认为这会打开安全问题,请发布更多信息。