Well no...it's not going to work.
Look at what you are doing:
string root = Server.MapPath("~");
Which gives you "E:\sg"
string originalpath = System.IO.Path.Combine(root, path);
Which gives you "E:\sg\a\b\c\d"
Then, you do this:
bool isExists = System.IO.Directory.Exists(Server.MapPath(@"~\\" + originalpath));
Which is checking to see if a file exists called "E:\sgE:sg\a\b\d\c"
Which is going to fail...
Why are you trying to include the root folder twice?