我想尝试从Asp.Net MVC3迁移到VNext,我使用的是windows服务项目(http://www.interworks.com/blogs/banderton/2009/10/30/long-running-tasks-aspnet),但这在VNext上似乎不起作用,因为它没有正确的System.ServiceModel引用,并且我不能添加dll。有没有附近的路?您是否建议使用其他方法来运行长时间任务,例如使用VNext进行大文件导入/计算?
发布于 2014-11-27 18:45:36
通常,不是因为ASP.NET vNext中的任何功能集(从Windows1.0开始就可以实现),而是因为权限:进程需要在高权限安全上下文中运行,或者能够模拟这样的用户帐户以控制.NET服务。
w3wp.exe (应用程序池托管进程,进而扩展为应用程序池和其中的应用程序)通常都运行在最低权限的用户帐户(通常是NT AUTHORITY\NETWORK SERVICE或具有足够权限写入网站根目录、数据库服务器和其他内容的自定义用户帐户)下(在最近的Windows版本中,这进一步简化为“服务帐户”的概念,您的工作进程和池在此帐户下运行)。
最简单的解决方案是创建一个具有控制服务和在此用户帐户下运行应用程序池进程所需权限的用户帐户,但我不建议这样做。
相反,请考虑创建一个新的Windows service,该服务随后控制另一个服务(或者,如果它是您自己的服务,则在进程中执行),该服务使用某种形式的IPC与您的ASP.NET应用程序通信,从而关闭自身并执行其他任务。例如,您可能想要查看命名管道。
发布于 2015-08-28 22:25:50
如果你需要在Windows服务中运行ASP.NET,你现在可以使用ASP.NET 5。我在这里写了一篇详细的文章:http://taskmatics.com/blog/host-asp-net-in-a-windows-service/
https://stackoverflow.com/questions/27168366
复制相似问题