Solved

Any best approach to change my shitty coding ?

Posted on 2012-03-10
5
229 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

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

In order to hide the "ugly" records selectors (triangles) in the rowheaders, here are some suggestions. Microsoft doesn't have a direct method/property to do it. You can only hide the rowheader column. First solution, the easy way The first sol…
Introduction Although it is an old technology, serial ports are still being used by many hardware manufacturers. If you develop applications in C#, Microsoft .NET framework has SerialPort class to communicate with the serial ports.  I needed to…
This video gives you a great overview about bandwidth monitoring with SNMP and WMI with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're looking for how to monitor bandwidth using netflow or packet s…
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…

744 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