Following is my code and not working on iis. But working on local.
This code is to convert up file to wav file and play after.
It convert and store audio file on local but not on IIS
public void ExecuteCommandSync(object command)
string AppPath = Request.PhysicalApplicationPath.Replace("http:\\", "");
////Get the application path
//exepath = Server.MapPath("Up2Wav.exe");
exepath = Server.MapPath("tmp/Up2Wav.exe");
string strCmd = exepath + " " + command;
StreamWriter _testData = new StreamWriter(Server.MapPath("data.txt"), true);
System.Diagnostics.ProcessStartInfo procStartInfo =
new System.Diagnostics.ProcessStartInfo("cmd", "/c " + strCmd);
// The following commands are needed to redirect the standard output.
// This means that it will be redirected to the Process.StandardOutput StreamReader.
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
// Do not create the black window.
procStartInfo.CreateNoWindow = true;
// Now we create a process, assign its ProcessStartInfo and start it
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
// Get the output into a string
string result = proc.StandardOutput.ReadToEnd();
// Display the command output.
catch (Exception objException)
// Log the exception
System.Diagnostics.Process.Start is working fine.
But it always runs on the Server, not the Client - that is where the code in the code behind is executed.
So when you say Process.Start, the application runs just as it used to - on the server. When you were developing, the server and client were the same machine, so it seemed to exactly what you wanted.
You cannot run any application on the client from the server: security forbids it.
You cannot make a C# function which will run on the client machine. Anything which you do in the code behind will only ever happen on the server. Spawning processes very rarely makes sense on the server, and in fact most professional hosting environments won't give permission to the ASP.net engine to do so.
This confusion is understandable considering that Microsoft wrote ASP.net in a way which deliberately blurs the boundary between client and server, i.e. controls that are rendered on the client 'exist' on the server, and setting properties in code behind results in (after a page refresh or AJAX call) values changing on the client, or vice versa. But it is still a standard web server and browser client architecture underneath, and it's important to understand that.
In this case, if the WAV converter doesn't have an embeddable public API, you still actually do need to spawn a process to run it. However, you need to respond to the client when the process finishes and give a URL that the client can use to retrieve the WAV file.
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)