Hi , firts thing that come to my mind is the line of your code:
string strPath = Server.MapPath(Request.ApplicationPath) + "~/NewFolder1/" + filname;
Maybe it could be reasonable to change it with next line:
string strPath = Server.MapPath(System.IO.Path.Combine("~/NewFolder1" , filname));
think this might help you, because when you invoke next line of code , it return the full path to folder "NewFolder1" :
Server.MapPath("~/NewFolder1") -> will be something like that (c:\inetpub\wwwroot\mysite\newfolder1);