Solved

Any best approach to change my shitty coding ?

Posted on 2012-03-10
5
230 Views
Last Modified: 2012-03-17
Hi All,

I was using Make directory to create a folders and subfolder in my ftp (using filezilla) works fine,but when i try to do in my test server (IIS FTP) doesn't work ,throws 550,file not found or no access.so just a quick way to change the code to create subdirctory in my ftp server works fine but i know its a kinda shitty way to do like that.

Some one please advice the second thought to approach.

 
   string path = "ftp://1.1.1.1/media/times/" + Name + "/test/fileName";
            string[] pathsplit = path.ToString().Split('/');
            string Firstpath = pathsplit[0] + "/" + pathsplit[1] + "/" + pathsplit[2] + "/" + pathsplit[3];
            string SecondPath = Firstpath + "/" + pathsplit[4];
            string ThirdPath = SecondPath + "/" + pathsplit[5];
            int count = pathsplit.Count();


            try
            {
                FtpWebRequest request = (FtpWebRequest)WebRequest.Create(path);
                request.Method = WebRequestMethods.Ftp.ListDirectory;
                request.Credentials = new NetworkCredential("sh", "se");
                using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
                {
                    // Okay.  
                    upload();
                }
            }
            catch (WebException ex)
            {
                try
                {
                   //create the first directory if its not there
                   //If already there call the catch
                    FtpWebRequest createdir = (FtpWebRequest)FtpWebRequest.Create(new Uri(Firstpath));
                    createdir.Method = WebRequestMethods.Ftp.MakeDirectory;
                    createdir.Credentials = new NetworkCredential("sh", "se");
                    createdir.UsePassive = true;
                    createdir.UseBinary = true;
                    createdir.KeepAlive = false;
                    FtpWebResponse response1 = (FtpWebResponse)createdir.GetResponse();
                    Stream ftpStream1 = response1.GetResponseStream();
                    ftpStream1.Close();
                    response1.Close();
                }
                catch (Exception e)
                {
                    try
                    {
                       //create the second directory if its not there
                       //If already there call the catch
                        FtpWebRequest createdir = (FtpWebRequest)FtpWebRequest.Create(new Uri(SecondPath));
                        createdir.Method = WebRequestMethods.Ftp.MakeDirectory;
                        createdir.Credentials = new NetworkCredential("sh", "se");
                        createdir.UsePassive = true;
                        createdir.UseBinary = true;
                        createdir.KeepAlive = false;
                        FtpWebResponse response1 = (FtpWebResponse)createdir.GetResponse();
                        Stream ftpStream1 = response1.GetResponseStream();
                        ftpStream1.Close();
                        response1.Close();
                    }
                    catch (Exception el)
                    {
                        try
                        {
   							//create the third directory if its not there
                   //If already there call the catch
                            FtpWebRequest createdir = (FtpWebRequest)FtpWebRequest.Create(new Uri(ThirdPath));
                            createdir.Method = WebRequestMethods.Ftp.MakeDirectory;
                            createdir.Credentials = new NetworkCredential("sh", "se");
                            createdir.UsePassive = true;
                            createdir.UseBinary = true;
                            createdir.KeepAlive = false;
                            FtpWebResponse response1 = (FtpWebResponse)createdir.GetResponse();
                            Stream ftpStream1 = response1.GetResponseStream();
                            ftpStream1.Close();
                            response1.Close();
                        }
                        catch
                        { }
                    
                    }
                }

                if (ex.Response != null)
                {
                    FtpWebResponse response = (FtpWebResponse)ex.Response;
                    if (response.StatusCode == FtpStatusCode.ActionNotTakenFileUnavailable)
                    {
                        // Directory not found.  
                    }
                }
            } 

Open in new window

0
Comment
Question by:Sha1395
  • 3
5 Comments
 
LVL 35

Accepted Solution

by:
Miguel Oz earned 500 total points
ID: 37705757
It looks more like you may have permissions issues in your server.
Please follow the comments on the link about how to use audit and process monitor
http://forums.iis.net/t/1149116.aspx
0
 
LVL 4

Expert Comment

by:Srinivasulu Muppala
ID: 37708376
0
 

Author Comment

by:Sha1395
ID: 37708391
Hi srinipro,

i don't have issue to upload,i have an issue to create sub dir.
0
 

Author Comment

by:Sha1395
ID: 37708392
@mas_oz2003,

Thank you so much for your comment,am still working with network people based on your suggestion to inherit the permission to all the subfolders.

Thanks Again.
0
 

Author Comment

by:Sha1395
ID: 37708432
Changed my code little bit,this looks some how better than previous,still looking for an expert comment to do this more efficient.

		var dir = new ConsoleApplication5.Program();
            string path = "ftp://1.1.1.1/testsvr01/times/" + "testfile" + "/svr01/fileName";
            string[] pathsplit = path.ToString().Split('/');
            string Firstpath = pathsplit[0] + "/" + pathsplit[1] + "/" + pathsplit[2] + "/" + pathsplit[3] + "/";
            string SecondPath = Firstpath + "/" + pathsplit[4] + "/";
            string ThirdPath = SecondPath + "/" + pathsplit[5] + "/";
            string[] paths = { Firstpath, SecondPath, ThirdPath };
            foreach (string pat in paths)
            {
               bool result= dir.EnsureDirectoryExists(pat);

                if (result==true)
                {
                    //do nothing
                }
                else
                {   //create dir
                    dir.createdir(pat);
                }
            }
            upload(path,filename);

        }
        private bool EnsureDirectoryExists(string pat)
        {

            try
            {
                //call the method the first path is exist ?
                FtpWebRequest request = (FtpWebRequest)WebRequest.Create(pat);
                request.Method = WebRequestMethods.Ftp.ListDirectory;
                request.Credentials = new NetworkCredential("sh", "se");
                using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
                {
                    return true;
                }
            }
            catch (Exception ex)
            { return false; }

        }
        public void createdir(string pat)
        {
            try
            {
                FtpWebRequest createdir = (FtpWebRequest)FtpWebRequest.Create(new Uri(pat));
                createdir.Method = WebRequestMethods.Ftp.MakeDirectory;
                createdir.Credentials = new NetworkCredential("sh", "se");
                createdir.UsePassive = true;
                createdir.UseBinary = true;
                createdir.KeepAlive = false;
                FtpWebResponse response1 = (FtpWebResponse)createdir.GetResponse();
                Stream ftpStream1 = response1.GetResponseStream();
                ftpStream1.Close();
                response1.Close();
            }
            catch (Exception ex)
            {
            }

        }

Open in new window

0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Article by: Ivo
C# And Nullable Types Since 2.0 C# has Nullable(T) Generic Structure. The idea behind is to allow value type objects to have null values just like reference types have. This concerns scenarios where not all data sources have values (like a databa…
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
Windows 10 is mostly good. However the one thing that annoys me is how many clicks you have to do to dial a VPN connection. You have to go to settings from the start menu, (2 clicks), Network and Internet (1 click), Click VPN (another click) then fi…
Many functions in Excel can make decisions. The most simple of these is the IF function: it returns a value depending on whether a condition you describe is true or false. Once you get the hang of using the IF function, you will find it easier to us…

896 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now