我可以使用Silverlight应用程序在服务器中运行.EXE文件吗?

我可以使用Silverlight应用程序在服务器中运行.EXE文件吗?,silverlight,process,exe,Silverlight,Process,Exe,我认为这是一项非常简单的任务,所以我认为我是弱智或类似的。我想部署一个测试应用程序,它遵循以下步骤: 用户使用浏览器打开Silverlight应用程序 用户填写Silverlight表单并单击“确定”按钮 按钮回调准备将表单作为参数传递给.EXE程序 program.exe-执行参数。如果一切正常,将在已知路径中生成result.txt Silverlight应用程序报告result.txt 到目前为止,我唯一的问题是第四步,因为没有System.Diagnostics.Process,我无法执

我认为这是一项非常简单的任务,所以我认为我是弱智或类似的。我想部署一个测试应用程序,它遵循以下步骤:

  • 用户使用浏览器打开Silverlight应用程序
  • 用户填写Silverlight表单并单击“确定”按钮
  • 按钮回调准备将表单作为参数传递给.EXE程序
  • program.exe-执行参数。如果一切正常,将在已知路径中生成result.txt
  • Silverlight应用程序报告result.txt

  • 到目前为止,我唯一的问题是第四步,因为没有System.Diagnostics.Process,我无法执行.exe程序。我尝试过一个COM解决方案,但对于这个测试来说,它不是一个好的解决方案。

    您是否考虑过在服务器上运行Windows服务,监视文件在指定目录中显示,然后运行EXE生成文本文件?silverlight进程可以轮询输出目录,直到txt文件显示。

    您是否考虑过在服务器上运行Windows服务,监视文件在指定目录中显示,然后运行EXE生成文本文件?silverlight进程可以轮询输出目录,直到txt文件出现。

    正如您现在应该意识到的,silverlight实际上是在浏览器内部本地运行的,使用.NET Framework的一个子集,即使在受信任状态下,对执行本地代码的支持也有些有限

    公平地说。。。Silverlight对此可能有些过分,但如果您希望这样做并且正在服务器上运行该进程,请执行以下操作:

    • 创建支持RIA服务的新Silverlight项目
    • 创建DomainService并添加如下所示的单个调用方法:

      [调用] 公共字符串运行进程(args…)

    • 创建一个按钮,用于在RunProcess上调用Invoke方法并传入参数。与Silverlight中的所有服务调用一样,这是一个异步回调,您需要连接一个lambda,以便在它准备好时获得结果

    • 在RunProcess(实际上是服务器端)中,启动进程并简单地将方法调用的结果作为字符串或其他类型的数据返回,这些数据对您希望显示的内容有意义

    正如您现在应该意识到的,Silverlight实际上是使用.NET Framework的一个子集在浏览器内部本地运行的,即使在受信任的状态下,对执行本地代码的支持也有些有限

    公平地说。。。Silverlight对此可能有些过分,但如果您希望这样做并且正在服务器上运行该进程,请执行以下操作:

    • 创建支持RIA服务的新Silverlight项目
    • 创建DomainService并添加如下所示的单个调用方法:

      [调用] 公共字符串运行进程(args…)

    • 创建一个按钮,用于在RunProcess上调用Invoke方法并传入参数。与Silverlight中的所有服务调用一样,这是一个异步回调,您需要连接一个lambda,以便在它准备好时获得结果

    • 在RunProcess(实际上是服务器端)中,启动进程并简单地将方法调用的结果作为字符串或其他类型的数据返回,这些数据对您希望显示的内容有意义

    这不是Windows服务的用途。他们不运行其他程序或启动辅助可执行文件。是的,这是一个服务可以做到的。当然是在服务器上。请确保它不是GUI程序。谢谢。这就是我实现它的方式,但我想知道是否有可能以“直接”的方式实现。我当前的解决方案是一堆XML文件,包含每个用户请求的所有相关信息,按生成时间排序。服务器进程正在监视XML文件夹,以便它可以检测新请求。这不是Windows服务的用途。他们不运行其他程序或启动辅助可执行文件。是的,这是一个服务可以做到的。当然是在服务器上。请确保它不是GUI程序。谢谢。这就是我实现它的方式,但我想知道是否有可能以“直接”的方式实现。我当前的解决方案是一堆XML文件,包含每个用户请求的所有相关信息,按生成时间排序。服务器进程正在监视XML文件夹,以便它可以检测新请求。为什么不能使用System.Diagnostics.process?这不是从web服务运行吗?我不知道。我是一个使用Silverligth的新手,但这似乎是对.NET Framework的某种限制。不管怎样,只是猜测而已。谢谢。为什么不能使用System.Diagnostics.Process?这不是从web服务运行吗?我不知道。我是一个使用Silverligth的新手,但这似乎是对.NET Framework的某种限制。不管怎样,只是猜测而已。谢谢,回答得好。不过可能有一个警告。如果Dani bISHOP需要使用无法在web服务中重写为代码的现有.exe,那么在结果准备就绪时仍然需要某种通知系统。我想最简单的方法是让Silverlight客户端定期轮询另一个web服务方法。该服务方法将检查文件系统中结果文件的外观,在出现时对其进行分析,并以客户端可以读取和显示的格式返回结果。@Henrik这当然是长期运行进程的考虑因素。谢谢。我查过安德鲁的答案,但你的答案也很有趣。我想我现在会保留上面的解决方案(也是我当前的解决方案),在处理结束时向用户发送脱机通知。除此之外,我认为您的解决方案应该实现另一层来限制任何流程的执行,但这确实是一个很好的解释。回答得好。可能会有一个警告