0

私は FTP と asp.net を初めて使用します。私のコードはローカル ホストのテスト中にのみ機能しますが、go-daddy でのライブ テスト中にエラーが発生します。どんな助けでもありがとう。

私は現在 2 つの Web サイトをホストしており、すべてのページとコードは AMUS フォルダーにあります。

 Unable to connect to the remote server
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Net.WebException: Unable to connect to the remote server

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:


[WebException: Unable to connect to the remote server]
   System.Net.FtpWebRequest.GetRequestStream() +839
   DBMiddleTier.addImageFTP(FileUpload file) +360
   Admin_CrudOperation.imgAddProduct_Click(Object sender, ImageClickEventArgs e) +96
   System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e) +115
   System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String eventArgument) +120
   System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563

私のコード

 //method to add image ftp
    public string addImageFTP(FileUpload file)
    {
        string filename = Path.GetFileName(file.FileName);
        Bitmap src = Bitmap.FromStream(file.PostedFile.InputStream) as Bitmap;
        Bitmap result = new Bitmap(src, 300, 300);
        string saveName = savePath + filename;
        result.Save(saveName, ImageFormat.Jpeg);
        System.Net.FtpWebRequest request = System.Net.WebRequest.Create("ftp://***.***.***.*/AMUS/images/" + filename) as System.Net.FtpWebRequest;
        //this example assumes the FTP site uses anoymous login on
        //NetWorkCredentials provides credentials for  password-based authentication such as digest, basic, NTLM
        request.Credentials = new System.Net.NetworkCredential("Username", "Password");

        //Copy the contents of the file to the request stream
        byte[] fileContents = null;
        if (file.HasFile)
        {
            //fileContents = FileUploadControl.FileBytes;
            fileContents = File.ReadAllBytes(saveName);

        }
        else
        {
            string res = "you need to provide a file";
            return res;
        }
        request.Method = System.Net.WebRequestMethods.Ftp.UploadFile;
        request.ContentLength = fileContents.Length;
        //GetReequestStream: retrieves the stream used to upload data to an FTP server.
        Stream requestStream = request.GetRequestStream();
        requestStream.Write(fileContents, 0, fileContents.Length);
        requestStream.Close();
        return "Successful Upload";
    }
4

1 に答える 1

0
/// <summary>
    /// ftpClient.upload("etc/test.txt", @"C:\Users\metastruct\Desktop\test.txt");
    /// </summary>
    /// <param name="remoteFile"></param>
    /// <param name="localFile"></param>
    public void uploadFile(string remoteFile, string localFile)
    {
        try
        {
            /* Create an FTP Request */
            ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + remoteFile);
            /* Log in to the FTP Server with the User Name and Password Provided */
            ftpRequest.Credentials = new NetworkCredential(user, pass);
            /* When in doubt, use these options */
            ftpRequest.UseBinary = true;
            ftpRequest.UsePassive = true;
            ftpRequest.KeepAlive = true;
            /* Specify the Type of FTP Request */
            ftpRequest.Method = WebRequestMethods.Ftp.UploadFile;
            /* Establish Return Communication with the FTP Server */
            ftpStream = ftpRequest.GetRequestStream();
            /* Open a File Stream to Read the File for Upload */
            FileStream localFileStream = new FileStream(localFile, FileMode.Create);
            /* Buffer for the Downloaded Data */
            byte[] byteBuffer = new byte[bufferSize];
            int bytesSent = localFileStream.Read(byteBuffer, 0, bufferSize);
            /* Upload the File by Sending the Buffered Data Until the Transfer is Complete */
            try
            {
                while (bytesSent != 0)
                {
                    ftpStream.Write(byteBuffer, 0, bytesSent);
                    bytesSent = localFileStream.Read(byteBuffer, 0, bufferSize);
                }
            }
            catch (Exception ex) { Console.WriteLine(ex.ToString()); }
            /* Resource Cleanup */
            localFileStream.Close();
            ftpStream.Close();
            ftpRequest = null;
        }
        catch (Exception ex) { Console.WriteLine(ex.ToString()); }
        return;
    }

/// <summary>
    /// ftp.uploadFolderContents("httpdocs/omid", @"E:\omid");
    /// </summary>
    /// <param name="remoteFolder"></param>
    /// <param name="localFolder"></param>
    /// <returns></returns>
    public bool uploadFolderContents(string remoteFolder, string localFolder)
    {
        bool rslt = false;

        try
        {
            string[] files = Directory.GetFiles(localFolder);
            string[] dirs = Directory.GetDirectories(localFolder);
            foreach (string file in files)
            {
                uploadFile(remoteFolder + "/" + Path.GetFileName(file), file);
            }
            foreach (string dir in dirs)
            {
                createFolder(remoteFolder + "/" + Path.GetFileName(dir));
                uploadFolderContents(remoteFolder + "/" + Path.GetFileName(dir), dir);
            }

            rslt = true;
        }
        catch (Exception)
        {
            rslt = false;
        }

        return rslt;
    }

        /// <summary>
    /// ftpClient.createDirectory("etc/test");
    /// </summary>
    /// <param name="newDirectory"></param>
    public void createFolder(string newDirectory)
    {
        try
        {
            /* Create an FTP Request */
            ftpRequest = (FtpWebRequest)WebRequest.Create(host + "/" + newDirectory);
            /* Log in to the FTP Server with the User Name and Password Provided */
            ftpRequest.Credentials = new NetworkCredential(user, pass);
            /* When in doubt, use these options */
            ftpRequest.UseBinary = true;
            ftpRequest.UsePassive = true;
            ftpRequest.KeepAlive = true;
            /* Specify the Type of FTP Request */
            ftpRequest.Method = WebRequestMethods.Ftp.MakeDirectory;
            /* Establish Return Communication with the FTP Server */
            ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
            /* Resource Cleanup */
            ftpResponse.Close();
            ftpRequest = null;
        }
        catch (Exception ex) { Console.WriteLine(ex.ToString()); }
        return;
    }
于 2013-02-18T22:31:29.037 に答える