P
Phillip N Rounds
I'm having problems using the WebClient.UploadFile() command.
I have MySender.ASPX which is supposed to upload two files to the server.
There is also ConsumeFileUpload.aspx which is intended to handle receipt of
the files. Pertinent code for each is below.
When I run the process locally in debug mode, everything works great (
VS.NET 2003 , ASP 1.1 ).
When I run locally on the server, everything works great.
When I try to remotely upload files, I get an error: THE REMOTE SERVER
RETURNED AN ERROR: (500) INTERNAL SERVER ERROR
I have given both ASPNET & NETWORK SERVICE Write/Modify permissions in the
target directory.
Any Suggestions
Button_Click in MySender.ASPX
{
string Small = "c:\\MySmall.jpg";
string Large = "c:\\MyBgPicture.jpg";
System.Net.WebClient MyWebClient = new System.Net.WebClient();
string URI="";
string SUBDIR = "";
util.GetLocationSettings( ref URI, ref SUBDIR);
string uri = URI + "/" + SUBDIR + "/ConsumeFileUpload.aspx";
uri.Replace("//","/");
try
{
byte[] by = MyWebClient.UploadFile( uri , "POST", this.Small);
byte[] by2 = MyWebClient.UploadFile( uri , "POST", this.Large);
}
catch ( Exception ex )
{
EventLog log = new System.Diagnostics.EventLog();
log.Source="LGS.AddProducts";
log.WriteEntry( ex.Message);
log.Close();
}
}
Page_Load code in my ConsumeFileUpload.ASPX
if ( util==null ) util = new Utilities();
string URI = "";
string SUBDIR = "";
util.GetLocationSettings( ref URI, ref SUBDIR ); //
Util.GetLocationSettings gets the Host Location Info, ultimately giving the
directory to save the file in. This is OK
SUBDIR = SUBDIR.Trim();
string path = "/" + SUBDIR + "/images/";
path.Replace("//","/");
// path is the path, relative to the host site, into which to put the
pictures.
HttpFileCollection files;
files = Page.Request.Files;
for(int index=0; index < files.AllKeys.Length; index++)
{
HttpPostedFile postedFile = files[index];
string fileName = null;
int lastPos = postedFile.FileName.LastIndexOf("\\");
if ( lastPos < 0) fileName = postedFile.FileName;
else { fileName = postedFile.FileName.Substring(++lastPos); }
// This gives us simply MyPicture.jpg
path = path.Trim();
fileName = fileName.Trim();
fileName = path + fileName;
string sMapPath = MapPath( fileName );
// This is where it tis to be saved, and gives the correct spot
:\inetpub\wwwroot\MySite\Images\MyPicure.jpg
EventLog log = new System.Diagnostics.EventLog();
log.Source="LGS.ConsumeUpload";
log.Log = "Application Log";
log.MachineName="CGIRemote2";
log.WriteEntry( "Saving: " + sMapPath, EventLogEntryType.Information);
sMapPath = sMapPath.Trim();
try
{ postedFile.SaveAs( MapPath( fileName ) ); }
catch ( Exception ex )
{
log.Source="MyIdentifier";
log.Log = "Application Log";
log.MachineName="MyHostName";
log.WriteEntry( "Exception:" + ex.Message, EventLogEntryType.Error);
log.WriteEntry( "MapPath: " + sMapPath, EventLogEntryType.Error );
}
log.Close();
}
I have MySender.ASPX which is supposed to upload two files to the server.
There is also ConsumeFileUpload.aspx which is intended to handle receipt of
the files. Pertinent code for each is below.
When I run the process locally in debug mode, everything works great (
VS.NET 2003 , ASP 1.1 ).
When I run locally on the server, everything works great.
When I try to remotely upload files, I get an error: THE REMOTE SERVER
RETURNED AN ERROR: (500) INTERNAL SERVER ERROR
I have given both ASPNET & NETWORK SERVICE Write/Modify permissions in the
target directory.
Any Suggestions
Button_Click in MySender.ASPX
{
string Small = "c:\\MySmall.jpg";
string Large = "c:\\MyBgPicture.jpg";
System.Net.WebClient MyWebClient = new System.Net.WebClient();
string URI="";
string SUBDIR = "";
util.GetLocationSettings( ref URI, ref SUBDIR);
string uri = URI + "/" + SUBDIR + "/ConsumeFileUpload.aspx";
uri.Replace("//","/");
try
{
byte[] by = MyWebClient.UploadFile( uri , "POST", this.Small);
byte[] by2 = MyWebClient.UploadFile( uri , "POST", this.Large);
}
catch ( Exception ex )
{
EventLog log = new System.Diagnostics.EventLog();
log.Source="LGS.AddProducts";
log.WriteEntry( ex.Message);
log.Close();
}
}
Page_Load code in my ConsumeFileUpload.ASPX
if ( util==null ) util = new Utilities();
string URI = "";
string SUBDIR = "";
util.GetLocationSettings( ref URI, ref SUBDIR ); //
Util.GetLocationSettings gets the Host Location Info, ultimately giving the
directory to save the file in. This is OK
SUBDIR = SUBDIR.Trim();
string path = "/" + SUBDIR + "/images/";
path.Replace("//","/");
// path is the path, relative to the host site, into which to put the
pictures.
HttpFileCollection files;
files = Page.Request.Files;
for(int index=0; index < files.AllKeys.Length; index++)
{
HttpPostedFile postedFile = files[index];
string fileName = null;
int lastPos = postedFile.FileName.LastIndexOf("\\");
if ( lastPos < 0) fileName = postedFile.FileName;
else { fileName = postedFile.FileName.Substring(++lastPos); }
// This gives us simply MyPicture.jpg
path = path.Trim();
fileName = fileName.Trim();
fileName = path + fileName;
string sMapPath = MapPath( fileName );
// This is where it tis to be saved, and gives the correct spot
:\inetpub\wwwroot\MySite\Images\MyPicure.jpg
EventLog log = new System.Diagnostics.EventLog();
log.Source="LGS.ConsumeUpload";
log.Log = "Application Log";
log.MachineName="CGIRemote2";
log.WriteEntry( "Saving: " + sMapPath, EventLogEntryType.Information);
sMapPath = sMapPath.Trim();
try
{ postedFile.SaveAs( MapPath( fileName ) ); }
catch ( Exception ex )
{
log.Source="MyIdentifier";
log.Log = "Application Log";
log.MachineName="MyHostName";
log.WriteEntry( "Exception:" + ex.Message, EventLogEntryType.Error);
log.WriteEntry( "MapPath: " + sMapPath, EventLogEntryType.Error );
}
log.Close();
}