Model view controller MVC控制器是否可以授权计划的web请求?

Model view controller MVC控制器是否可以授权计划的web请求?,model-view-controller,web,request,quartz.net,Model View Controller,Web,Request,Quartz.net,我的web应用程序必须在后台进行一些计算。我已经研究了多种解决方案,我希望使用业务逻辑,而不是触发所有计算的SQL作业。经过几天的研究,我仍然不确定什么是最适合我的案例的解决方案 很多文章都提到Quartz.NET,一个单独的windows服务(但我认为这不是大多数共享web主机服务的选项),一个windows任务,等等 为了使计算保持在业务逻辑中,我将使用专用的“任务”控制器扩展我的web应用程序,该控制器自动启动计算,然后返回其操作的结果 Q1:使用Quartz.NET定时web请求调用控制

我的web应用程序必须在后台进行一些计算。我已经研究了多种解决方案,我希望使用业务逻辑,而不是触发所有计算的SQL作业。经过几天的研究,我仍然不确定什么是最适合我的案例的解决方案

很多文章都提到Quartz.NET,一个单独的windows服务(但我认为这不是大多数共享web主机服务的选项),一个windows任务,等等

为了使计算保持在业务逻辑中,我将使用专用的“任务”控制器扩展我的web应用程序,该控制器自动启动计算,然后返回其操作的结果

Q1:使用Quartz.NET定时web请求调用控制器并不困难,但我如何保护它?如果我将[Authorize]属性添加到我的“任务”控制器,它将阻止请求。(请注意,我在我的internet web应用程序上使用表单身份验证)我不希望internet上的用户能够启动我的“任务”控制器

问题2:如果我认为共享web主机服务不支持安装单独的windows服务或远程桌面连接是正确的,那么我有两个选项:

  • 希望共享web主机服务支持windows任务(,但可以使用授权凭据调用它吗?

  • 从我的应用程序开始启动Quartz.NET(这当然不是一个理想的解决方案…)

提前谢谢


首先,我不会从计划作业调用ASP.NET MVC控制器。我只想委托给业务组件/服务(不管名称是什么),并确保在那里使用上下文权限运行正确的内容。这可能意味着我会使用计算对象的相关信息启动作业,并将该信息传递给服务组件(计算用户X的每日平均值)。我看不到用ASP.NETMVC堆栈伪装调用的真正好处

所以Q1:代码级安全,不使用ASP.NET MVC堆栈

您可以始终在没有windows服务的情况下运行,然后在不使用时冒应用程序池关闭的风险。解决这个问题的一个方法是使用一个外部ping程序,确保有呼叫,这并不像您指出的那样理想。在数据库中有作业和触发器可以防止信息丢失,但不能防止失火

问题2:运行Quartz.NET很可能比尝试访问Windows计划任务容易得多

一些共享提供程序对运行代码有非常严格的设置。如果沙盒太紧,Quartz.NET可能根本无法运行