2009-06-13 8 views
0

私は2つの分離したプロジェクトのうちの1つで、もう1つは参照を持つWindowsサービスです。WindowsサービスとASP.NET MVCプロジェクトのやり取りを取得するには?

私は、私のサービスが参照プロジェクトからメソッドを呼び出すために、このような何かしたい:

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:アクセスが拒否されました」と表示されます。

+0

サービスでASP.NET MVCコードを呼び出せますか? –

+0

はい。 MessageSystemクラスはモデルです。 – jvalente

+0

サービスのapp.configにモデル接続文字列を追加しましたか(web.configにあるようなもの)? – jmservera

答えて

0

私は、Windowsサービスを考え、実行されたASP.NET MVCアプリでWebサービスを使用してその問題を解決しました。

0

Webサーバーから呼び出すか、サービス内のASP.NET MVCアプリケーションにある同じコードを実行したいだけですか?

統合認証を使用するリモートサーバーを呼び出す場合は、リモートサーバー上で有効なユーザーとしてサービスを実行する必要があります(そのユーザーは、サービスとしてログオンする必要があります)。サービスを実行することができます)。

Webサービスとして使用する場合(ASP.NET MVCコードはサーバー上で実行され、サービスからリクエストを行う場合)、ASPの適切なURLにWeb参照を追加する必要があります。 NET MVCアプリケーションは、プロジェクトへの通常のプロジェクト参照ではなく、公開します。 Scott's post on mixing ASP.NET WebForms with ASP.NET MVCを参照し、Webサービスの作成の詳細についてはASMXサービスの例を参照してから、サービスプロジェクトからWeb参照(またはサービス参照)をそのASMXに追加してください。 [jvalenteさんのコメントを見た後、Webサービスのオプションを明確にするために、編集]

+0

サービスとMVCアプリケーションが同じマシンにあります。今私は、モデルから文字列を取得することさえできないことに気付きました。私は何か間違っている。モデルと "話す"サービスを得るための特別な点はありますか? – jvalente

1

Webサーバー経由で呼び出すか、サービス内のASP.NET MVCアプリケーションにある同じコードを実行したいだけですか?

統合認証を使用するリモートサーバーを呼び出す場合は、リモートサーバー上で有効なユーザーとしてサービスを実行する必要があります(そのユーザーは、サービスとしてログオンする必要があります)。サービスを実行することができます)。

関連する問題