2014-11-27 5 views
4

Я хочу попробовать перейти на VNext из Asp.Net MVC 3, я использовал проект службы Windows (http://www.interworks.com/blogs/banderton/2009/10/30/long-running-tasks-aspnet), но это не работает на VNext, потому что у него нет надлежащего System.ServiceModel ссылка, и я не могу добавить dll. Есть ли способ вокруг? Вы порекомендовали бы другие способы запуска длинных задач, таких как большой импорт файлов/вычислений с помощью VNext?Asp.Net VNext Служба Windows

ответ

4

Как правило, нет - не из-за каких-либо функций в ASP.NET vNext (это было возможно с .NET 1.0), а из-за разрешений: процесс должен выполняться в контексте безопасности с высоким уровнем привилегий или иметь возможность олицетворять такую ​​учетную запись пользователя для управления службами Windows.

w3wp.exe (процесс хостинга пула приложений, а также расширение, пул приложений и приложения в нем) обычно выполняются под учетной записью пользователя с наименьшими привилегиями (часто NT AUTHORITY\NETWORK SERVICE или пользовательской учетной записью с достаточными разрешениями для записи в корневой каталог веб-сайта, сервер базы данных и не намного больше (в последних версиях Windows это еще больше сокращено до понятия «учетной записи службы», в которой работают ваш рабочий процесс и пулы).

Самое легкое решение состоит в том, чтобы создать учетную запись пользователя с необходимыми привилегиями для управления службами и запустить процесс пула приложений под этой учетной записью пользователя, но я не рекомендую это делать.

Вместо этого создайте новую службу Windows, которая затем управляет другой службой (или если это ваша собственная служба, сделайте это в-proc), которая использует некоторую форму IPC для связи с вашим приложением ASP.NET, чтобы закрыть себя и выполнять другие задачи. Например, вы можете посмотреть на named-pipes.

+0

ли вы рекомендовать что-то конкретное? Я хотел бы использовать этот http://www.interworks.com/blogs/banderton/2009/10/30/long-running-tasks-aspnet, но vnext не имеет надлежащей System.ServiceModel lib, и я не могу добавить ссылку dll – user007

+0

@ user007 'System.ServiceModel' является WCF (' System.ServiceProcess' является службой Windows). Статья, с которой вы связаны, заключается в разработке службы WCF, которая работает в службе Windows. .NET по-прежнему включает 'System.ServiceModel.dll' - вы, вероятно, смотрите не в том месте. – Dai

+0

Одна из проблем заключается в том, что я не могу добавить свою библиотеку в vnext из проекта библиотеки C#, который содержит интерфейс IJobService, еще одна проблема заключается в том, что ссылка System.ServiceModel отсутствует в vnext. Я попытался использовать nuget, чтобы найти его, добавив его в ссылку, но проблема такая же: http://s10.postimg.org/56n8xg0zt/Captursssse.png Я предполагаю, что на этом этапе vnext не поддерживает ссылки из dll, и, возможно, позже это будет быть реализованы? – user007

Смежные вопросы