[英]How to get Windows Service and ASP.NET MVC project interacting?
我有两个独立的项目,其中一个是Windows服务,另一个具有参考。
我希望我的服务从引用的项目中调用方法,如下所示:
protected override void OnStart(string[] args) {
MessageSystem msg_system = new MessageSystem();
IQueryable<MensagemGrupo> mensagens =
msg_system.GetScheduledMensagensGrupo();
foreach (var msg in mensagens) {
msg_system.ConfirmaEnvio(DateTime.Now, msg.id);
}
我正在调用的代码抛出服务:
public class MessageSystem {
private StorageModelDataContext db = new StorageModelDataContext();
public IQueryable<MensagemGrupo> GetScheduledMensagensGrupo() {
IQueryable<MensagemGrupo> mensagens = db.GetMensagensGrupoAgendadas();
return mensagens;
}
}
我从db.GetMensagensGrupoAgendadas()开始获取System.NullReferenceException。 可能是因为db在远程服务器中吗?
我可以从服务中以这种方式调用方法吗?
PS:服务是LocalSystem。 我已经尝试过网络服务,但是在启动服务时出现“错误5:访问被拒绝”。
您是否要通过Web服务器调用它,还是只想在服务中运行ASP.NET MVC应用程序中的相同代码?
如果是后者,并且您正在调用使用集成身份验证的远程服务器,则您的服务必须以在该远程服务器上有效的用户身份运行(该用户需要“登录即服务”权限才能运行该服务器。服务)。
您是否要通过Web服务器调用它,还是只想在服务中运行ASP.NET MVC应用程序中的相同代码?
如果是后者,并且您正在调用使用集成身份验证的远程服务器,则您的服务必须以在该远程服务器上有效的用户身份运行(该用户需要“登录即服务”权限才能运行该服务器。服务)。
如果要将其用作Web服务(即ASP.NET MVC代码在服务器上运行,并且您从服务中对其发出请求),则应将Web引用添加到ASP.NET MVC应用程序公开的相应URL。 ,而不是对该项目的正常项目引用。 请参阅Scott关于将ASP.NET WebForms与ASP.NET MVC混合的文章,并查看带有ASMX服务的示例,以获取有关创建Web服务的更多详细信息,然后从您的服务项目中为该ASMX添加Web参考(或服务参考)。
[编辑,在看到jvalente的评论后阐明了Web服务选项]
我使用Windows服务执行的ASP.NET MVC应用程序中的Web服务解决了该问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.