WCF, la valeur d’atsortingbut de service dans la directive ServiceHost est introuvable

J’essaie d’héberger mon service avec IIS 6 mais je continue à obtenir cette exception.

Server Error in '/WebServices' Application. -------------------------------------------------------------------------------- The type 'QS.DialogManager.Communication.IISHost.RecipientService', provided as the Service atsortingbute 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 atsortingbute 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 atsortingbute value in the ServiceHost directive could not be found.] System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(Ssortingng constructorSsortingng, Uri[] baseAddresses) +6714599 System.ServiceModel.HostingManager.CreateService(Ssortingng normalizedVirtualPath) +604 System.ServiceModel.HostingManager.ActivateService(Ssortingng normalizedVirtualPath) +46 System.ServiceModel.HostingManager.EnsureServiceAvailable(Ssortingng 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 atsortingbute 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 si ce n’est qu’il semble ne pas trouver mes assemblées. Le code doit être correctement compilé avec les classes publiques.

Voici mon fichier .svc:

  

J’ai essayé de créer un service très simple qui ne contient rien d’autre que de voir si cela fonctionnerait, mais la même erreur persiste.

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

Option 1 :

Ce message est souvent dû à un problème de configuration IIS 7. Si vous avez l’habitude de créer un répertoire virtuel pointant vers le dossier dans lequel réside votre service, cela ne fonctionne plus. Maintenant, vous devez utiliser l’option “Créer une application …”.

Autres options :

  • WCF: le type fourni en tant qu’atsortingbut Service est introuvable
  • Le type fourni en tant qu’atsortingbut Service dans la directive ServiceHost est introuvable.

Le problème pourrait également être un dans un espace de noms différent dans le fichier svc tel qu’il se trouve dans le fichier svc.cs.

Dans le fichier svc, l’espace de noms doit être au format suivant.

 Service="Namespace.SvcClassName" 

Je sais que c’est probablement la réponse “évidente”, mais cela m’a fait perdre un peu de temps. Assurez-vous qu’il y a une DLL pour le projet dans le dossier bin. Lorsque le service a été publié, le gars qui l’a publié a supprimé les dll parce qu’il pensait qu’ils étaient dans le GAC. Celui spécifiquement pour le projet (QS.DialogManager.Communication.IISHost.RecipientService.dll, dans ce cas) n’était pas là.

Même erreur pour une raison très différente.

Cette erreur se produit en raison de la non-concordance du nom du service dans le fichier .SVC. Vous avez probablement modifié le nom de la classe de service qui implémente l’interface. La solution consiste à ouvrir le fichier .SVC et à correspondre exactement à l’atsortingbut Service et à l’atsortingbut CodeBehind. Donc, votre fichier .SVC devrait être comme

 <%@ 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 concerne le fichier .svc qui utilise le langage C #, avec le débogage activé, l’interface d’implémentation de la classe de service et cette classe se trouve dans le dossier app avec le nom Service.cs et Product est le namespace de la classe Service.

Veuillez également apporter les modifications correspondantes dans le fichier de configuration du service.

                 

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

  1. Dans le projet VS contenant votre service Web, ouvrez le fichier .svc dans l’éditeur XML (cliquez avec le bouton droit sur le fichier, ouvrez avec …, choisissez Éditeur XML (texte), OK).
  2. Notez la valeur de l’atsortingbut “Service”.
  3. Assurez-vous qu’il correspond au nom complet du type de votre service. Cela inclut le nom du type d’espace de noms +. Par exemple, si l’espace de noms est «MyCompany.Department.Services» et que la classe s’appelle «MyService», la valeur de l’atsortingbut de service doit être «MyCompany.Department.Services.MyService».

J’ai eu la même exception, cela est dû au type pas correctement mentionné dans le fichier .svc

J’ai corrigé avec le correctif ci-dessous.

si votre fichier .svc.cs a une classe comme celle-ci

 namespace Azh.Services.MyApp { public class WcfApp : FI.IWcfAppService { ... } } 

pour cela, le fichier .svc devrait ressembler à ceci

 <%@ ServiceHost Language="C#" Debug="true" Service="Azh.Services.MyApp.WcfApp" CodeBehind="WcfApp.svc.cs" %> 

Vous devez configurer le chemin du dossier bin vers le service local bin.

J’ai pratiquement résolu le même problème. Voici ma suggestion – L’erreur signifie que l’object référencé dans l’atsortingbut Service est introuvable. Pour que l’object soit trouvé, l’application ou la bibliothèque doit générer une sortie vers le dossier bin.

Vous pouvez modifier la page de propriétés de l’application et spécifier le chemin de sortie vers «bin».

Si vous avez renommé quelque chose, vérifiez que (Properties /) AssemblyInfo.cs est correct, ainsi que l’en-tête du fichier de service.

ServiceName.svc

 <%@ ServiceHost Language="C#" Debug="true" Service="Company.Namespace.WcfApp" CodeBehind="WcfApp.svc.cs" %> 

Aligner avec votre espace de noms dans votre Service.svc.cs

Deux clés à cela pour certaines versions de la valeur d’atsortingbut de service dans la directive ServiceHost n’ont pas pu être trouvées: problème: (1) Si vous travaillez dans Silverlight, vous devez utiliser le service Silverlight WCF activé, et non le non Service Silverlight WCF; Cela mettra à jour Web.Config pour les liaisons et permettra au type d’être visible; (2) Faites correspondre le nom de la classe dans le nouveau service avec le nom du service – le but ici est de créer un fichier wsdl … afin que vous sachiez que la fonctionnalité du service est exposée à votre client Silverlight et au Web. il est utile que le service corresponde à la classe. Si vous obtenez les noms gommés, vous devrez éditer le Web.Config à 3 endroits (serviceBehaviors, services et liaisons).

Il y a eu tellement de tentatives sincères pour aider les personnes confrontées à ce problème qui ne m’ont pas aidé, il convient de souligner que cet article concerne une solution Silverlight et qu’il peut ne pas s’appliquer à une personne n’utilisant pas Silverlight 3 dans une configuration client / Web .

J’espère que cela aide.

J’ai eu le même problème mais aucune idée de ce qui l’a causé. Je l’ai résolu en passant de Debug à Release et Run en utilisant Debug / Start New Instance. Après cela, il a été lancé à la fois dans Release et Debug. C’était magique …

J’ai également rencontré ce problème en essayant l’exemple de WCF Microsoft.ServiceModel.Samples.Calculator. J’utilise IIS 5.1. Je l’ai résolu en m’assurant que le site Web généré automatiquement (servicemodelsamples) n’était pas une application. Cliquez-droit sur le dossier, cliquez sur “Propriétés” et cliquez sur le bouton “Créer”.

J’ai eu ce problème – mon type de service était dans le GAC. Cela fonctionnerait si j’ajoutais la dll contenant le type au dossier bin mais comme c’était dans le GAC ce n’était pas ce que je voulais. J’ai finalement ajouté ceci au web.config pour le service

         

et cela fonctionnait sans avoir besoin de dll dans le dossier bin.

J’avais mes DLL de service dans le dossier bin où se trouvait le fichier svc. Déplacer les DLL dans le dossier racine bin a résolu le problème.

Dans mon cas, cliquez avec le bouton droit sur Répertoire virtuel et sélectionnez “Convertir en application”!

J’ai fait face à cette erreur aujourd’hui, la raison était; L’utilisateur IIS n’est pas autorisé à accéder au dossier de l’application. J’ai donné les permissions de lecture au dossier racine de l’application.

Cela peut sembler sortingvial, mais cela vaut la peine de le mentionner: vous devez créer le service (dans Visual Studio) – une DLL sera alors créée dans le sous-dossier bin.

Lorsque le service est “déployé” sur un serveur – ce dossier doit contenir ce fichier DLL – sinon cette erreur sera renvoyée …

Ajoutez une référence de service dans votre service ou copie de dll.

La construction de la solution avant d’append la référence de service a résolu mon problème.

J’ai eu cette erreur en essayant d’append la référence de service pour le premier WCF compatible Silverlight dans la même solution. Je viens de construire le projet .Web et il a commencé à fonctionner.

J’ai eu le même problème, a trouvé ce fil, a essayé tout sauf nogo.

Ensuite, je passe encore 4 heures de temps perdu.

Ensuite, j’ai trouvé que les parameters de compilation étaient passés de 64bits à x86. Quand je l’ai ramené à 64bits, cela a fonctionné. Je ne sais pas exactement pourquoi, mais le pool d’applications IIS pourrait ne pas être configuré pour autoriser les applications 32 bits.