#wcf #visual-studio-2010
#wcf #visual-studio-2010
Вопрос:
Я пройдусь по тому, что я делал до сих пор, шаг за шагом, как показано ниже:
- создано пустое решение
- добавлен веб-сайт WCFService
- удалил службу и IService с веб-сайта
- добавлен проект библиотеки служб WCF в решение
- добавлены конечные точки в web.config
- сделал то же самое в app.config
- добавлена ссылка на библиотеку служб в веб-приложении
- 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..