【问题标题】:.NET program which can be called from ASP.NET and run as a scheduled task.NET 程序,可以从 ASP.NET 调用并作为计划任务运行
【发布时间】:2013-08-08 14:20:29
【问题描述】:

我需要编写一个程序来发送电子邮件...

它需要在 Windows 中设置为计划任务,并从 ASP.NET 网站按需调用。

我知道如何编写可执行文件(我的 ASP.NET 网站即将完成)。

我知道如何编写程序,但我希望避免在两个地方重复我的代码!

我的第一个想法是编写一个 .exe,将其设置为计划任务,然后从 ASP.NET 网站的代码中调用它,例如button_clicked 但我不太确定这是个好主意。

有没有更好的方法(更安全,但不费力)?

这是一个 ASP.NET 网站项目(不是应用程序),它不是解决方案的一部分 - 应该是吗?。

【问题讨论】:

  • 通过 ASP.NET 网站中的按钮发送电子邮件,您担心哪些安全问题?
  • 为什么不将代码抽象成一个单独的程序集,您可以在可执行文件和网站之间共享。那么你就没有重复的代码了。
  • 您可以让 schedule 任务向网站生成一个 http 请求(使用 curl 或小型自定义程序),这可能会触发您网站项目的逻辑
  • @KarlAnderson 不,我说的是从 ASP.NET 运行 exe
  • @GeorgeJohnston 您能否提供更多详细信息作为答案?

标签: asp.net .net .net-4.0 webforms windows-server-2003


【解决方案1】:

如果您可以访问服务器上的 GAC,则只需将代码从 EXE 中抽象出来并放入库程序集中。将库 DLL 添加到 GAC。然后从 EXE 和 Web 项目中引用该 DLL。

如果您无法访问 GAC,您仍然可以这样做,只需将 DLL 与 EXE 一起部署到您的 Web 应用程序的 bin 中。

编辑

这里是创建库程序集http://broadcast.oreilly.com/2010/07/understanding-c-namespaces-and.html的方法

【讨论】:

  • 听起来是个不错的方法,您能否提供有关如何创建 DLL 的教程的链接?
【解决方案2】:

在 ASP.NET 中包含发送代码,并让计划任务在您的网站上请求一个受密码保护的 URL(例如 /send-mails?pw=jdgdifgnfdhg)。这样你就不需要EXE了。您可以使用 curl.exe 执行 http 请求。超级简单。

【讨论】:

  • 如果它是一个 Internet 网站,我肯定不会在 URL 中设置密码,但是在 Intranet 上挖掘,因此值得考虑,因为如果需要我可以自己手动运行它。当您可以编写一行 Powershell 脚本甚至是 VbScript 时,为什么还要使用 curl?你必须下载curl?
  • 以任何你想要的方式执行请求。我不熟悉ps或vbs。; URL 中的密码比模拟登录更简单。您可以使用简单的 if 语句来检查它。
猜你喜欢
  • 2012-08-15
  • 2013-04-27
  • 2015-12-25
  • 2011-08-19
  • 2014-06-19
  • 2020-01-28
  • 2014-12-19
  • 2020-08-07
  • 2016-08-03
相关资源
最近更新 更多