【问题标题】:trying to pass file name from aspx page to console.exe试图将文件名从 aspx 页面传递给 console.exe
【发布时间】:2010-03-16 00:14:51
【问题描述】:

我想将 aspx 页面中的标签或文本框的值传递给 console.exe 应用程序 这样如果值是 sample.doc 它就会改变。

我从 aspx 页面调用

   string f = TextBox1.Text;

    System.Diagnostics.Process.Start("C:/DocUpload/ConsoleApplication1.exe", f);

我尝试转换为字符串,然后使用字符串变量代替 sample.doc 但没有运气

object FileName = System.IO.Path.Combine(ExecutableFileInfo.DirectoryName, "sample.doc");

欢迎任何帮助或想法。 谢谢你

【问题讨论】:

  • 文本框的值是多少?它应该是磁盘上的文件吗?如果有,是什么文件夹?你得到什么错误?
  • 你应该为你的文本框命名。
  • 文本框的值是我希望处理的文件的名称,并且控制台应用程序启动的任何时间点都会显示文件名并崩溃

标签: c# textbox console argument-passing


【解决方案1】:

您可能正在尝试处理位于不同文件夹中的文件。

如果是这样,则需要传递文件的完整路径,如下所示:

Process.Start(@"C:\DocUpload\ConsoleApplication1.exe", 
              Path.Combine(@"C:\path\to\folder", TextBox1.Text));

【讨论】:

  • 控制台应用程序和文件在同一个文件夹中,但会尝试您的建议
【解决方案2】:

这是我用来从调用应用程序启动进程的方法。由于您是从网络应用程序调用它,因此您需要确保您拥有适当的权限。

        Process         proc                = new Process();
        StringBuilder   sb                  = new StringBuilder();
        string[]        aTarget             = target.Split(PATH_SEPERATOR); 
        string          errorMessage;
        string          outputMessage;

        foreach (string parm in parameters)
        {
            sb.Append(parm + " ");
        }

        proc.StartInfo.FileName                 = target;
        proc.StartInfo.RedirectStandardError    = true;
        proc.StartInfo.RedirectStandardOutput   = true;
        proc.StartInfo.UseShellExecute          = false;
        proc.StartInfo.Arguments                = sb.ToString();

        proc.Start();

        proc.WaitForExit
            (
                (timeout <= 0)
                ? int.MaxValue : (int)TimeSpan.FromMinutes(timeout).TotalMilliseconds
            );


        errorMessage    = proc.StandardError.ReadToEnd();
        proc.WaitForExit();

        outputMessage   = proc.StandardOutput.ReadToEnd();
        proc.WaitForExit();

到 MSDN 的链接:

http://msdn.microsoft.com/en-us/library/system.diagnostics.process.start.aspx

您还需要检查以确保运行 Web 应用程序的帐户具有执行程序的适当权限。

【讨论】:

  • 链接到 MSDN 时,应该链接到默认版本,而不是 .Net 1.1。
  • 嘿,伙计们,感谢您的建议,它让我思考更多,所以我在 aspx 文件字符串文件名 = TextBox1.Text 中使用了它; System.Diagnostics.Process.Start("C:/DocUpload/ConsoleApplication1.exe", filename) 并在 console.exe 上使用下面的代码 StringBuilder sb = new StringBuilder(); foreach (args 中的字符串 s) { sb.Append(s); } object docFileName = System.IO.Path.Combine(ExecutableFileInfo.DirectoryName, sb.ToString());非常感谢你们最好的
猜你喜欢
  • 2015-05-12
  • 2016-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-13
相关资源
最近更新 更多