簡體   English   中英

如何使Windows Service和ASP.NET MVC項目交互?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM