【问题标题】:Best way to run a tool from ASP.Net page从 ASP.Net 页面运行工具的最佳方式
【发布时间】:2009-03-26 13:55:03
【问题描述】:

我有一个想要从内部站点运行的开发人员工具。它扫描项目的源代码并将信息存储在数据库中。我希望用户能够访问该站点,选择他们的项目,然后点击运行。

我不希望将代码上传到网站,因为项目可能很大。我希望能够在他们的机器上本地运行我的程序集。有没有简单的方法可以做到这一点?

编辑:我应该注意,目前这需要在 VS2005 中完成。
编辑 2:我正在寻找与 TrendMicro's Housecall 类似的功能。我希望扫描在本地运行,但结果要显示在网页中

【问题讨论】:

    标签: c# asp.net executable


    【解决方案1】:

    您可以使用 ClickOnce 项目 (winform/wpf) - 本质上是通过 Web 服务器部署的常规客户端应用程序。在客户端,它可以做任何它需要的事情。 VS2005/VS2008 将此(用于 winform/wpf)作为“发布” - 并生成浏览器(或至少某些浏览器;-p)识别的“.application”文件。

    可能可以用 Silverlight 做同样的事情,但是它有一个更严格的沙箱等。它还需要请求网络服务器代表它完成所有的数据库工作。

    【讨论】:

    • 这似乎是一种可能的解决方案,使用 Web 服务接受结果并让用户在提交之前转到从 Web 服务生成的页面以检查结果
    • 好吧,大概你必须提交一个数据库来获取(html)网络服务器和网络服务来共享数据......但是是的,类似的东西。您也可以只在客户端应用程序中进行检查,然后简单地提交。
    【解决方案2】:

    我希望能够运行我的程序集 在他们的机器上本地

    听起来您希望他们下载该工具并从他们的本地计算机上运行它,这对您有用吗?

    【讨论】:

    • 那行得通,问题是他们下载后如何从网站调用该工具
    【解决方案3】:

    任何代码都可以扫描给定位置和权限的文件。如果一个网站在另一台机器上打开一个 exe 并允许它运行并访问 Web 服务器上包含的文件,则需要非常低的安全级别,这意味着整个系统实际上是完全开放的,容易受到攻击。如果您的系统完全位于防火墙后面并因此受到保护免受外部干扰,那么您希望更多地查看权限而不是代码。

    要在机器上运行 exe,请尝试以下记事本示例,尽管您可能还必须使用指定的目录

    ProcessStartInfo psi = new ProcessStartInfo("notepad.exe");
    psi.WindowStyle = ProcessWindowStyle.Hidden;

    进程 p = new Process(); p.EnableRaisingEvents = true; p.Exited += new EventHandler(ExitHandlerToKillProcess); p.StartInfo = psi; p.Start();

    完成后不要忘记终止进程。或者使用javascript。无论哪种方式,请注意安全权限并记住这样做的风险。

    【讨论】:

      【解决方案4】:

      我可能会编写某种命令行工具或服务来处理和提取项目数据。然后我会使用一个页面来更新/注册 Web 服务器和命令行工具都可以访问的项目。然后在指定时间手动或通过 cron 或类似机制将数据提取到您的数据库中。一旦你有了这个,你只需要使用网站来显示最后的提取时间和提取的数据。

      如果项目/最终用户位于不同的子网等,那么您将需要最终用户运行该工具,然后让它将数据发布到数据库中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-09
        • 1970-01-01
        • 2013-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多