Redirecting results to a text file
I am programming ASPX pages in C# and I want to redirect the result from a created process to a text file, like:
 Process myProcess = new Process(); myProcess.StartInfo.FileName = "cmd.exe"; string a = @"/c echo Y| ping www.yahoo.com>d:temp.txt"; myProcess.StartInfo.Arguments = a; myProcess.StartInfo.UseShellExecute=false; myProcess.StartInfo.RedirectStandardOutput = true; myProcess.StartInfo.CreateNoWindow = true ; myProcess.Start();
But it did not work: nothing was written into the file temp.txt and I did not get any error message. Can you help me to find where the problem is?

    Requires Free Membership to View

    When you register, you'll begin receiving targeted emails from my team of award-winning writers. Our goal is to provide a unique online resource for developers, architects and development managers tasked with building and maintaining enterprise applications using Visual Basic, C# and the Microsoft .NET platform.

    Hannah Smalltree, Editorial Director

    By submitting your registration information to SearchWinDevelopment.com you agree to receive email communications from TechTarget and TechTarget partners. We encourage you to read our Privacy Policy which contains important disclosures about how we collect and use your registration and other information. If you reside outside of the United States, by submitting this registration information you consent to having your personal data transferred to and processed in the United States. Your use of SearchWinDevelopment.com is governed by our Terms of Use. You may contact us at webmaster@TechTarget.com.

The problem is a lack of permissions to write the target file, which is usually the case for the ASP.NET process identity, unless you increase permissions (i.e. creating an empty file in advance and giving ASP.NET or Everyone full control over it). In your case, I think it's better to avoid writing a file altogether. You can do that using the following code:
 ProcessStartInfo info = new ProcessStartInfo( "cmd.exe", @"/c echo Y| ping localhost"); info.UseShellExecute = false; info.RedirectStandardOutput = true; info.CreateNoWindow = true ; Process p = Process.Start(info); string output = p.StandardOutput.ReadToEnd(); Response.Write(output);
Writing files (fixed file names, specially) in an ASP.NET application is not a good idea as multiple threads can try to write the same file simultaneously.

More resources on ASPX files

ASP.NET C# database connection in external file

Setting permissions to write to event log

This was first published in November 2004