Asp.Net VNext Windows服务

4

我想尝试从Asp.Net MVC 3迁移到VNext,我使用了Windows服务项目(http://www.interworks.com/blogs/banderton/2009/10/30/long-running-tasks-aspnet),但在VNext上似乎无法正常工作,因为它没有适当的System.ServiceModel引用,我无法添加dll。是否有解决方法?您是否推荐其他方法来运行长时间任务,例如大文件导入/计算与VNext一起?

2个回答

4
通常情况下不行,这并不是因为ASP.NET vNext的功能集(自从.NET 1.0就已经可以了),而是因为权限问题:一个进程需要在高特权安全上下文下运行,或者能够模拟这样的用户账户,以便控制Windows服务。
w3wp.exe(应用程序池托管进程,以及应用程序池和其中的应用程序)通常都运行在最低特权用户账户下(通常是NT AUTHORITY\NETWORK SERVICE或具有足够权限写入网站根目录、数据库服务器等内容的自定义用户账户,但没有其他权限(在Windows的最新版本中,这被进一步简化为“服务账户”,您的工作进程和池运行在此账户下)。
最简单的解决方案是创建一个具有必要权限以控制服务并使应用程序池进程运行在此用户账户下,但我不建议这样做。
相反,考虑创建一个新的Windows服务,然后控制其他服务(或如果是您自己的服务,则在进程内执行),使用某种形式的IPC与ASP.NET应用程序进行通信,以关闭自身并执行其他任务。例如,您可能想查看命名管道。

你有什么具体的建议吗?我很想使用这个http://www.interworks.com/blogs/banderton/2009/10/30/long-running-tasks-aspnet,但是vnext没有适当的System.ServiceModel库,我无法添加dll引用。 - user007
@user007 System.ServiceModel 是 WCF(System.ServiceProcess 是 Windows 服务)。你链接的那篇文章是关于开发在 Windows 服务内运行的 WCF 服务。.NET 仍然包括 System.ServiceModel.dll - 你可能正在寻找错误的位置。 - Dai
一个问题是我无法将包含IJobService接口的C#库项目添加到vnext中,另一个问题是vnext中缺少System.ServiceModel引用。我尝试使用NuGet查找它,将其添加到引用中,但问题仍然存在http://s10.postimg.org/56n8xg0zt/Captursssse.png。我猜在这个阶段,vnext不支持从dll引用,也许以后会实现? - user007
@user007,你到底是怎么添加对.NET 1.0的引用的?!! - Dai
在Nuget中,VNext没有其他版本,只有v1版本。我可以安装它,但它并没有做太多的事情... http://s30.postimg.org/jgktlwh8x/Captursssse.png - user007

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接