77 votes

WCF, Service de la valeur de l'attribut dans la ServiceHost la directive n'a pas pu être trouvé

Je suis en train d'héberger mon service avec IIS 6, mais je continue à obtenir de cette exception.

    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

Je n'ai absolument aucune idée, sauf qu'il semble qu'il ne trouve pas mon assemblées. Le code doit être correctement compilé avec les classes publiques.

Voici mon .svc fichier:

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

J'ai essayé de créer un très très simple service qui contient juste rien à voir si ce serait le travail, mais encore la même vieille erreur s'affiche.

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

73voto

Peter Stegnar Points 3819

Le problème pourrait aussi être un dans un autre espace de noms dans le fichier svc que c'est dans svc.cs fichier.

Dans svc espace de noms de fichiers doivent être dans le format suivant.

Service="Namespace.SvcClassName"

67voto

Konstantin Tarkus Points 16862

Option:

Ce message est souvent due à un IIS 7 config problème. Si vous avez utilisé pour la création d'un répertoire virtuel pointant vers le dossier où se trouve ce service, qui ne fonctionne plus. Maintenant, vous devez utiliser l'option "Créer une Application..." option à la place.

D'Autres Options:

32voto

baileyrt Points 399

Je sais que c'est probablement le "évident" réponse, mais il a trébuché moi un peu. Assurez-vous que il ya une dll du projet dans le dossier bin. Lorsque le service a été publié, le gars qui l'a publié supprimé les fichiers dll parce qu'il pensait qu'ils étaient dans le GAC. L'un spécifiquement pour le projet (QS.DialogManager.Communication.IISHost.RecipientService.dll dans le cas présent) n'était pas là.

Même erreur pour une raison TRÈS différente.

12voto

Chandra Malla Points 451

Cette erreur se produit en raison de l'inadéquation de nom de Service .SVC fichier. Probablement que vous pourriez avoir changé le nom de la classe de service est la mise en œuvre de l'interface.La Solution est d'ouvrir .SVC fichier et correspondre exactement à l'attribut de Service et le Code-behind de l'Attribut. Donc, votre .SVC fichier devrait ressembler à

<%@ ServiceHost Language="Language you are using" Debug="bool value to enable debugging" Service="Service class name that is implementing your Service interface" Codebehind="~/Appcode/Class implementing interface.cs"%>. for eg.

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

Cet exemple est pour .svc fichier à l'aide du langage C#, avec le débogage activé, le Service de classe implémentant l'interface et cette classe est à l'intérieur de l'app du dossier avec le nom du Service.cs et le Produit est de l'espace de noms de la classe de Service.

Aussi, Merci de faire des changement dans le fichier de configuration du service.

 <system.serviceModel>
    <services>
    <service name="Product.Service" behaviorConfiguration="ServiceBehavior">
    <endpoint address="" binding="wsHttpBinding" contract="Product.Iservice">
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
    </service>
    </services>
    <behaviors>
    <behavior name="ServiceBehavior">
    <serviceMetaData httpGetEnabled="true"/>
    <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
    </behaviors>
    </system.serviceModel>

9voto

charlie249 Points 61

Vérifiez que vous êtes de référencement de type correct de la ServiceHost directive dans le .svc fichier. Voici comment...

  1. Dans le VS projet contenant votre service web, ouvrez le .svc fichier dans l'éditeur XML (cliquez-droit sur le fichier, Ouvrir Avec..., choisissez XML (Texte) de l'Éditeur, OK).
  2. Note le "Service" valeur de l'attribut.
  3. Assurez-vous qu'il correspond pleinement qualifié, tapez le nom de votre service. Cela comprend l'espace de noms + nom de type. Par exemple, si l'espace de noms est "MyCompany.Département.Services" et la classe est appelée "MyService", puis le Service de la valeur de l'attribut doit être "MyCompany.Département.Services.MyService".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X