VS2010, служба WCF не запускается

#wcf #visual-studio-2010

#wcf #visual-studio-2010

Вопрос:

Я пройдусь по тому, что я делал до сих пор, шаг за шагом, как показано ниже:

  1. создано пустое решение
  2. добавлен веб-сайт WCFService
  3. удалил службу и IService с веб-сайта
  4. добавлен проект библиотеки служб WCF в решение
  5. добавлены конечные точки в web.config
  6. сделал то же самое в app.config
  7. добавлена ссылка на библиотеку служб в веб-приложении
  8. ctrl F5 9

Я получаю следующую ошибку:

Ошибка сервера в приложении ‘/WFLedger’. Тип ‘Services.WFLedger.WF_Ledger’, предоставленный в качестве значения атрибута Service в директиве ServiceHost или предоставленный в элементе конфигурации system.Не удалось найти ServiceModel/serviceHostingEnvironment/serviceActivations. Описание: Необработанное исключение возникло во время выполнения текущего веб-запроса. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении:

Система.Исключение InvalidOperationException: тип ‘Services.WFLedger.WF_API_Ledger’, предоставленный в качестве значения атрибута Service в директиве ServiceHost или предоставленный в элементе конфигурации system.Не удалось найти ServiceModel/serviceHostingEnvironment/serviceActivations.

Ошибка источника:

Во время выполнения текущего веб-запроса было сгенерировано необработанное исключение. Информацию о происхождении и расположении исключения можно определить с помощью приведенной ниже трассировки стека исключений.

Трассировка стека:

[Исключение InvalidOperationException: тип ‘Services.WFLedger.WF_Ledger’, предоставленный в качестве значения атрибута Service в директиве ServiceHost или предоставленный в элементе конфигурации system.Не удалось найти ServiceModel/serviceHostingEnvironment/serviceActivations.]
Система.ServiceModel.Активация.ServiceHostFactory.CreateServiceHost(String constructorString, базовые адреса Uri[]) 654
System.ServiceModel.HostingManager.CreateService(String normalizedVirtualPath) 1439
System.ServiceModel.HostingManager.ActivateService(String normalizedVirtualPath) 45
Система.ServiceModel.HostingManager.Обеспечить доступность службы (строка нормализована по виртуальному пути) 647

[Исключение ServiceActivationException: служба ‘/WFLedger/WF_Ledger.svc’ не может быть активирована из-за исключения во время компиляции. Сообщение об исключении: Тип «Services.WFAPILedger.WF_API_Ledger’, предоставленный в качестве значения атрибута Service в директиве ServiceHost или предоставленный в элементе конфигурации system.Не удалось найти ServiceModel/serviceHostingEnvironment/serviceActivations ..]
System.Runtime.Асинхронный результат.Завершение (результат IAsyncResult) 437
Система.ServiceModel.Активация.HostedHttpRequestAsyncResult.Завершение (результат IAsyncResult) 188
Система.ServiceModel.Активация.HostedHttpRequestAsyncResult.Выполняется синхронно (контекст HttpApplication, строка routeServiceVirtualPath, логический flowContext, логический ensureWFService) 230 System.ServiceModel.Активация.HttpModule.Запрос процесса (отправитель объекта, EventArgs e) 360
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Выполнить() 213 System.Web.HttpApplication.HttpApplication.ExecuteStep (шаг IExecutionStep, логическое значение и выполняется синхронно) 76

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

Ответ №1:

Посмотрите на файл WF_Ledger.svc в проекте вашего веб-сайта. Она должна состоять только из одной строки. Там будет атрибут Service, содержащий «Services.WFAPILedger.WF_API_Ledger». WCF ищет «Службы.WFAPILedger.Класс WF_API_Ledger», но не находит его. Пространство имен и имя класса должны либо существовать в проекте веб-сайта, либо быть ссылкой при попытке настройки. Вам нужно будет отредактировать этот атрибут службы, чтобы он соответствовал классу реализации службы в проекте библиотеки служб WCF.

Комментарии:

1. огромное спасибо, проблема заключалась в том, что я неправильно указал имя класса в файле .svc, глупая проблема, но раздражающая

2. ЧЕРТ, у меня было ‘e’ вместо ‘a’ в имени класса. Кровавая ОШИБКА

Ответ №2:

Пожалуйста, проверьте, предоставлен ли файл .svc и имеет ли он следующую форму.

  <% @ServiceHost Language=C# Debug="true" Service="MyService" CodeBehind="~/App_Code/Service.cs" %>
  

Это всего одна строка, и файл не должен содержать ничего другого.

Ответ №3:

Попробуйте добавить новую службу по умолчанию, затем проверьте, что недавно добавленная служба работает нормально. Если да, проверьте указанное имя контракта конечной точки web.config, а в файле .svc проверьте правильность указанного кода.

Ответ №4:

В .svc параметр файловой службы должен включать пространство имен, за которым следует имя класса, т.е. оно должно быть в формате mynamespace.myservice

Ответ №5:

Создайте проект WCF и повторите попытку. Эта ошибка может возникнуть из-за отсутствия библиотеки DLL в папке bin.

Для меня сборка и повторная попытка разрешили это.

Ответ №6:

Даже убедитесь, что в вашей директиве .svc file значение атрибута «service» является полным именем класса, например, если ваше пространство имен похоже на «ns1.ns2.ns3.className» (где ns1, ns2, ns3 — пространства имен).

Ответ №7:

Эта ошибка может возникнуть при переименовании имени класса в файле *.svc.cs без переименования его в разметке *.svc.

Два способа решения этой проблемы:

  • Переименуйте имя класса в исходное имя.
  • Переименуйте ссылку на службу в разметке (щелкните правой кнопкой мыши в файле *.svc, затем выберите «Просмотреть разметку» *).

Ваш код разметки выглядит следующим образом:

 <%@ ServiceHost Language="C#" Debug="true" Service="WCFSample.MyClass"CodeBehind="MyClass.svc.cs" %>
  

* Примечание: У меня была эта проблема в VS2017, не знаю, есть ли эта опция в VS2010.

Ответ №8:

проверьте имя функции и параметр в классе Iservice, в котором вы вызываете функцию, и проверьте свой класс Service, в котором также есть функция define..