#vb.net #wcf #service #host
#vb.net #wcf #Обслуживание #хост
Вопрос:
Должно быть, я схожу с ума…
После получения тестового WCF, размещенного в службе Windows, я пытаюсь создать другой (практика, практика, практика).
Я создал библиотеку служб WCF, добавил одну функцию. Затем создал службу Windows и добавил мой WCF в проект. Остальные материалы, расположенные здесь (http://joefreeman.co.uk/blog/2010/03/creating-a-setup-project-for-a-windows-wcf-service-with-visual-studio/)
Теперь я получаю сообщение об ошибке «Sub Mian не найден в [приложении WCF]» при попытке создать решение.
Я не думал, что проектам WCF требуется Sub Main, поскольку они являются службами, а не приложениями. Что я делаю не так? В моем последнем проекте у меня не было sub main. Есть идеи?
Ответ №1:
Для других, кто ищет тот же ответ, что и я…
Создал службу в VB.NET (VS2010), и получал ту же ошибку, что указана выше…
'Sub Main' was not found in 'SERVICENAME.Service1'.
В VB.NET VS2010 автоматически создал для меня файл «Service1.Designer.vb». Внутри этого файла было:
Shared Sub Main()
Dim ServicesToRun() As System.ServiceProcess.ServiceBase
' More than one NT Service may run within the same process. To add
' another service to this process, change the following line to
' create a second service object. For example,
'
' ServicesToRun = New System.ServiceProcess.ServiceBase () {New Service1, New MySecondUserService}
'
ServicesToRun = New System.ServiceProcess.ServiceBase() {New SERVICENAME}
System.ServiceProcess.ServiceBase.Run(ServicesToRun)
End Sub
Чтобы устранить эту проблему, щелкните правой кнопкой мыши название вашего решения в обозревателе решений, перейдите на вкладку «Приложение» и выберите «Sub Main» в качестве объекта запуска в раскрывающемся списке «Объект запуска». Перекомпилируйте.
Конечно, имена файлов и структура в C # будут другими, но идея в том, что Visual Studio куда-то поместила основную процедуру, и, надеюсь, она уже должна знать, где она находится.
Ответ №2:
Самой службе WCF не нужен Sub Main, но вашей службе Windows нужен.
Сравните с ранее созданной рабочей службой Windows.
редактировать: используя C #, когда я создаю новый проект с использованием шаблона службы Windows, я получаю следующий исходный код в Program.cs
файле ( static void Main
это ваш Sub Main
). Я был бы очень удивлен, если у вас также нет этого в вашей службе Windows.
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main()
Комментарии:
1. Не могу найти разницу между ними. Ни у одного из них нет sub main, оба имеют OnStart и onStop с идентичным кодом (за исключением имени WCF). Сводит меня с ума!
2. Я использую C #, но когда я использую шаблон «новая служба Windows», я получаю
Program.cs
файл.3. Что произошло, так это то, что я попытался скопировать свою прежнюю рабочую модель, за исключением того, что я использовал обычный WCF в отличие от веб-WCF, который у меня был в исходной модели. Заметка для себя: они разные! Исправление заключалось в том, чтобы просто скопировать оригинал, переименовать все и отредактировать конфигурационные файлы в соответствии с новыми каталогами. Тем не менее, спасибо за ваши сообщения!
Ответ №3:
Убедитесь, что вы случайно не изменили тип приложения на что-то глупое вроде «приложение Windows forms», нажмите свойства проекта и убедитесь, что он находится в «библиотеке классов».