【问题标题】:C# as web applicationC# 作为 Web 应用程序
【发布时间】:2011-03-19 01:54:25
【问题描述】:

我正在寻找有关将 C# 应用程序作为 Web 应用程序运行的最佳方法的建议。我的应用程序将一个文件和一些配置设置作为输入,它针对该文件运行一些脚本,然后输出一个新文件。

我希望能够将其作为 Web 服务运行,以便可以从任何操作系统访问它,方法是将 .exe 和引用的 DLL 保留在后端。

有没有办法做到这一点?我知道我可以选择启动虚拟服务器并使用 RDP,但我想让它成为原生 Web 体验。

  • WCF 是解决方案吗?
  • XAML?
  • Microsoft 是否有解决方案来获取 .exe 并在 IIS Web 服务器上运行它?

谢谢!

【问题讨论】:

    标签: c# iis web-applications


    【解决方案1】:

    只需一个简单的 Web 应用程序,您就可以很容易地做到这一点;你不需要做很多特别的事情。只需使用 Process 类调用您的 exe:

    Process myApp = new Process();
    myApp.StartInfo.FileName = ConfigurationManager.AppSettings["myAppLocation"];
    myApp.StartInfo.CreateNoWindow = true;
    myApp.Start();
    myApp.WaitForExit();
    
    // Open file and read it
    // Additional Info at http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx
    

    但是,更好的选择是从您的 EXE 中提取该代码(您可能在某处拥有该代码)并将其作为类库引入您的 Web 项目以供使用。

    【讨论】:

    • 第一个解决方案假设他的 Executable 的多个实例可以同时运行。例如,如果脚本对临时文件使用硬编码名称,并且两个用户尝试同时使用该网页,则可能会发生各种不良情况。
    • 没错,这就是为什么我建议他将代码提取到一个他可以重用的类库中。当 Web 请求尝试使用共享资源时,总会存在竞争 =D
    • True....但是添加与类库相同的代码不会自动解决使用共享资源的(假设)问题,应该单独解决。如果需要,请在答案中添加一个警告,我将删除我的 cmets =)。
    【解决方案2】:

    除非您绝对需要将现有应用程序保留为在后端调用的 .exe,否则最简单的解决方案是将您的 C# 代码集成到一个简单的 ASP.NET Web 应用程序中。您可以从 Web 应用程序中引用现有的 DLL 以在服务器端使用 tem。查看有关制作简单 ASP/NET Web 应用程序的教程,例如:

    http://www.kirupa.com/net/helloWorld.htm

    只需添加一个 html 输入字段以允许用户上传文件,并为输出文件制作下载链接。

    【讨论】:

      【解决方案3】:

      wcf 是一个服务但不是可执行的东西,你可以看看 Browser WPF 应用程序,或者 Silverlight...

      在两者之间,强烈推荐使用silverlight,但它的异质性更强。 bwpf 更容易,因为就像创建 wpf 应用程序时所做的那样,但只能在 IE 下运行

      http://silverlight.net/ 加载的东西是用 silverlight 构建的,它只在 IIS 下运行

      浏览器 wpf 是你的 exe 和 dll 的东西...

      【讨论】:

      • @john saunders:他在问哦如何从不同的操作系统访问,然后silverlight和bwpf是解决方案,他们可以使用dll来构建功能,wcf作为服务在桌面应用程序之间进行通信和网络应用程序......也许我的英语不是很好,我的解释不是很清楚,但这就是 =D
      • 他在询问如何访问他现有的应用程序。 SilverLight 将被重写。
      猜你喜欢
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 2012-10-30
      • 1970-01-01
      • 2019-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多