WCF, значение атрибута Service в директиве ServiceHost не найдено - PullRequest
70 голосов
/ 06 апреля 2009

Я пытаюсь разместить свой сервис на IIS 6, но получаю это исключение.

    Server Error in '/WebServices' Application.
--------------------------------------------------------------------------------

The type 'QS.DialogManager.Communication.IISHost.RecipientService', provided as the Service attribute value in the ServiceHost directive could not be found. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: The type 'QS.DialogManager.Communication.IISHost.RecipientService', provided as the Service attribute value in the ServiceHost directive could not be found.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

Stack Trace: 


[InvalidOperationException: The type 'QS.DialogManager.Communication.IISHost.RecipientService', provided as the Service attribute value in the ServiceHost directive could not be found.]
   System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses) +6714599
   System.ServiceModel.HostingManager.CreateService(String normalizedVirtualPath) +604
   System.ServiceModel.HostingManager.ActivateService(String normalizedVirtualPath) +46
   System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath) +654

[ServiceActivationException: The service '/WebServices/dm/RecipientService.svc' cannot be activated due to an exception during compilation.  The exception message is: The type 'QS.DialogManager.Communication.IISHost.RecipientService', provided as the Service attribute value in the ServiceHost directive could not be found..]
   System.ServiceModel.AsyncResult.End(IAsyncResult result) +15626880
   System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +15546921
   System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context, Boolean flowContext) +265
   System.ServiceModel.Activation.HttpModule.ProcessRequest(Object sender, EventArgs e) +227
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +80
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +171




--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:2.0.50727.3082; ASP.NET Version:2.0.50727.3082 

Я понятия не имею, за исключением того, что кажется, что он не может найти мои сборки. Код должен быть правильно скомпилирован с открытыми классами.

Вот мой файл .svc:

<%@ ServiceHost Language="C#" Debug="true" Service="QS.DialogManager.Communication.IISHost.RecipientService" CodeBehind="RecipientService.svc.cs" %>

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

The type 'IISHost.Service1', provided as the Service attribute value in the ServiceHost directive could not be found. 

Ответы [ 22 ]

1 голос
/ 14 июля 2016

В моем случае щелкните правой кнопкой мыши на виртуальном каталоге и выберите «Преобразовать в приложение»!

1 голос
/ 13 августа 2015

У меня были служебные библиотеки в папке bin, где находился файл svc. Перемещение DLL в корневую папку bin решило проблему.

1 голос
/ 23 декабря 2009

Два ключа к этому для некоторых разновидностей «значения атрибута Service в директиве ServiceHost не могут быть найдены»: (1) Если вы работаете в Silverlight, вам следует использовать службу Silverlight с поддержкой WCF, а не Служба WCF не Silverlight; это обновит Web.Config для привязок и позволит типу быть видимым; (2) Сопоставьте имя класса в новом сервисе с именем сервиса - цель здесь состоит в том, чтобы сделать wsdl ..., чтобы вы знали, что функциональность сервиса доступна вашему клиенту Silverlight и Интернету; это помогает, чтобы сервис соответствовал классу. Если вы запутали имена, вам придется редактировать Web.Config в трех местах (serviceBehaviors, services и bindings).

Было так много искренних попыток помочь людям с этой проблемой, которые мне не помогли, поэтому следует подчеркнуть, что эта статья предназначена для решения Silverlight и может не подходить для тех, кто не использует Silverlight 3 в клиенте / Веб-конфигурация.

Надеюсь, это поможет.

1 голос
/ 22 сентября 2011

Это может звучать тривиально, но стоит упомянуть: Вам необходимо построить службу (в Visual Studio) - тогда в подпапка bin.

Когда служба "развернута" на сервере - в этой папке bin должен быть этот DLL-файл, иначе эта ошибка будет выдана ...

1 голос
/ 25 мая 2010

У меня была такая же проблема, но я понятия не имел, что ее вызвало. Я решил это, переключившись с Debug на Release и Run, используя Debug / Start New Instance. После этого он запускался как в Release, так и в Debug. Это было волшебство ...

1 голос
/ 20 октября 2010

Я также столкнулся с этой проблемой, пробуя пример WCF Microsoft.ServiceModel.Samples.Calculator. Я использую IIS 5.1. Я решил это, убедившись, что автоматически созданный веб-сайт (servicemodelsamples) не является приложением. Щелкните правой кнопкой мыши папку, выберите «Свойства» и нажмите кнопку «Создать».

1 голос
/ 12 августа 2010

У меня была эта проблема - мой тип обслуживания был в GAC. Это работало бы, если бы я добавил dll, содержащую тип, в папку bin, но, как это было в GAC, это было НЕ то, что я хотел. В конце концов я добавил это в web.config для службы

<system.web>
    <customErrors mode="RemoteOnly" />
    <compilation debug="true" targetFramework="4.0">
        <assemblies>
            <add assembly="[name in GAC], Version=[version in GAC], Culture=neutral, PublicKeyToken=[ac token]" />
        </assemblies>
    </compilation>
</system.web>

и это работало без необходимости каких-либо DLL в папке bin.

0 голосов
/ 12 ноября 2018
  1. Убедитесь, что файл разметки (SVC) имеет атрибут службы с namespace.classname и codebehind будет classname.svc.cs

  2. Перестройте решение

  3. Перезапустите пулы приложений из локального IIS один раз.

0 голосов
/ 16 июля 2014

У меня была такая же проблема, нашел эту ветку, перепробовал все кроме nogo.

Тогда я провожу еще 4 часа потраченного времени.

Затем я обнаружил, что настройки компиляции изменились с 64 бит на x86. Когда я изменил его обратно на 64 бита, это сработало. Не знаю точно, почему, но может быть так, что пул приложений IIS не настроен на разрешение 32-разрядных приложений.

0 голосов
/ 22 апреля 2012

Я получил эту ошибку при попытке добавить ссылку на службу для первого WCF с поддержкой Silverlight в том же решении. Я просто строю .Web проект, и он начал работать ..

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