Как обеспечить взаимодействие Windows Service и ASP.NET MVC проекта? - PullRequest
0 голосов
/ 13 июня 2009

У меня есть два отдельных проекта, один из которых является службой 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;
    }
}

Я получаю исключение System.NullReferenceException, начиная с db.GetMensagensGrupoAgendadas (). Может ли это быть потому, что БД находится на удаленном сервере?

Могу ли я вызывать методы таким способом из службы?

PS: Служба является локальной системой. Я пробовал Сетевую службу, но я получаю «Ошибка 5: Доступ запрещен» при запуске службы.

Ответы [ 3 ]

1 голос
/ 25 января 2011

Вы хотите вызвать это через веб-сервер или просто хотите запустить тот же код, что и в вашем приложении ASP.NET MVC в вашей службе?

Если это последний и вы вызываете удаленный сервер, использующий встроенную аутентификацию, ваша служба должна работать как пользователь, действительный на удаленном сервере (этому пользователю потребуются права «вход в систему как служба», чтобы иметь возможность запустить сервис).

0 голосов
/ 14 июня 2009

Я решил эту проблему с помощью веб-службы в приложении ASP.NET MVC, которое выполняется с помощью службы Windows.

0 голосов
/ 13 июня 2009

Хотите ли вы вызывать это через веб-сервер или просто хотите запустить тот же код, что и в вашем приложении ASP.NET MVC в вашей службе?

Если это последний и вы вызываете удаленный сервер, использующий встроенную аутентификацию, ваша служба должна работать как пользователь, действительный на удаленном сервере (этому пользователю потребуются права «вход в систему как служба», чтобы иметь возможность запустить сервис).

Если вы хотите использовать его в качестве веб-службы (т. Е. Код ASP.NET MVC выполняется на сервере и вы делаете запросы к нему из своей службы), вам следует добавить веб-ссылку на соответствующий URL-адрес вашего ASP.NET. Приложение MVC выставляет, а не обычную ссылку проекта на проект. См. сообщение Скотта о смешивании ASP.NET WebForms с ASP.NET MVC и посмотрите на пример со службой ASMX для получения более подробной информации о создании веб-службы, затем добавьте веб-ссылку (или ссылку на службу) к этому. ASMX из вашего сервисного проекта.

[отредактировано для уточнения опции веб-службы после просмотра комментария jvalente]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...