Service WCF, le type fourni en tant que valeurs d'attribut de service...n'a pas pu être trouvé

Lorsque je clique avec le bouton droit sur Eval.svc dans Visual Studio 2012 et que je l'affiche dans le navigateur, j'obtiens ce qui suit -

Le type ' EvalServiceLibary.Eval', fourni en tant que valeur D'attribut de Service dans la directive ServiceHost, ou fourni dans le système d'élément de configuration.serviceModel / serviceHostingEnvironment/serviceActivations n'a pas pu être trouvé.

Lorsque j'exécute le service WCF à partir du client de test, tout fonctionne bien.

EVAL service:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class EvalService : IEvalService
{
    Dictionary<string, JobPhaseTimer> jobTimers = new Dictionary<string, JobPhaseTimer>();

    public void SubmitEntry(ENBO.Jobs.Job job, ENBO.Jobs.JobDetail jobDetail, ENBO.TimeLogs.TimeLog timeLog, ENBO.Users.User user, ENBO.Utilities.EntryType entryType, JobPhase jobPhase)
    {
        if (entryType == EntryType.Active)
        {
            JobPhaseTimer timer = new JobPhaseTimer();
            timer.UID = job.ID + "_" + jobPhase.ID;
            timer.JobID = job.ID;
            timer.JobDetailID = jobDetail.ID;
            timer.PhaseID = jobPhase.ID;
            timer.StartTime = DateTime.Now;
            timer.Stopwatch.Start();
            jobTimers.Add(timer.UID, timer);

            TimeLog log = new TimeLog();
            log.JobID = job.ID;
            log.PhaseID = jobPhase.ID;
            log.UserID = user.ID;
            log.DateEntry = DateTime.Now;
            log.EntryType = EntryType.Active;

            if (log.AddNewTimeLog())
            {
                //Do something
            }
        }
        else if (entryType == EntryType.Paused)
        {
            JobPhaseTimer timer = jobTimers[job.ID + "_" + jobPhase.ID];
            timer.Stopwatch.Stop();

            TimeLog log = new TimeLog();
            log.JobID = job.ID;
            log.PhaseID = jobPhase.ID;
            log.UserID = user.ID;
            log.DateEntry = DateTime.Now;
            log.EntryType = EntryType.Paused;

            if (log.AddNewTimeLog())
            {
                //Do something
            }
        }
    }
}

IEvalService.cs (Service Contrat)

[ServiceContract]
public interface IEvalService
{
    [OperationContract]
    void SubmitEntry(Job job, JobDetail jobDetail, TimeLog timeLog, User user, EntryType entryType, JobPhase jobPhase);
}

Eval.svc balisage :

<%@ ServiceHost Language="C#" Debug="true" Service="EvalServiceLibary.Eval" %>

Web.config :

<?xml version="1.0"?>
<configuration>

  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5"/>
  </system.web>
  <system.serviceModel>
    <services>
      <service name="EvalServiceLibary.EvalService">
        <endpoint address="" behaviorConfiguration="" binding="webHttpBinding"
      contract="EvalServiceLibary.IEvalService" />
        <endpoint address="" binding="basicHttpBinding" bindingConfiguration=""
      contract="EvalServiceLibary.IEvalService" />
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="EvalServiceSite.EvalAspNetAjaxBehavior">
          <enableWebScript />
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <protocolMapping>
        <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>    
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
      multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <directoryBrowse enabled="true"/>
  </system.webServer>
</configuration>

Des idées pour lesquelles je reçois cette erreur? J'ai cherché Google et rencontré quelques pages mais rien ne semble fonctionner.

Merci!

25
demandé sur marc_s 2013-07-11 15:18:02

13 réponses

Modifiez la ligne suivante dans votre fichier Eval.svc à partir de:

<%@ ServiceHost Language="C#" Debug="true" Service="EvalServiceLibary.Eval" %> 

À:

<%@ ServiceHost Language="C#" Debug="true" Service="EvalServiceLibary.EvalService" %>
61
répondu user3578181 2014-05-12 10:11:52

Assurez-vous que les fichiers binaires sont sous le sous-répertoire "bin" de votre ".svc" fichier

29
répondu vasek 2015-04-28 15:31:55

Fait face à ce problème exact. Le problème a été résolu lorsque j'ai changé L'espace de noms Service=".ServiceName " balise dans le balisage (clic droit xxxx.svc et sélectionnez View Markup dans visual studio) pour correspondre à l'espace de noms que j'ai utilisé pour mon xxxx.svc.fichier cs

16
répondu TheCopyPaster 2015-09-10 14:41:00

S'avère que L'évaluation.svc.cs avait besoin que son espace de noms soit changé en EvalServiceLibary, plutôt Qu'EvalServiceSite.

9
répondu dynamicuser 2017-01-13 17:49:53

Je viens de frapper ce problème moi-même, et ni cela ni aucune des autres réponses sur le net n'a résolu mon problème. Pour moi, c'était un étrange où le répertoire virtuel avait été créé sur une branche différente dans un autre serveur de contrôle de source (Fondamentalement, nous avons mis à jour de TFS 2010 à 2013) et la solution s'est souvenue de son mappage.

Quoi qu'il en soit, j'ai cliqué à nouveau sur le bouton "Créer un répertoire virtuel", dans les propriétés du projet de Service. Il m'a donné un message sur le fait d'être mappé à un dossier différent et voudrais-je le mettre à jour. J'ai cliqué sur Oui, et cela a résolu le problème.

4
répondu Detail 2015-03-06 12:43:16
  1. Lorsque vous créez une application IIS seulement la /bin ou /App_Code dossier dans le répertoire racine de l'application IIS. Rappelez-vous donc de mettre tout le code dans le répertoire racine /bin ou /App_code (Voir http://blogs.msdn.com/b/chrsmith/archive/2006/08/10/wcf-service-nesting-in-iis.aspx).

  2. Assurez - vous que le nom du service et le contrat contiennent le nom complet(par exemple namespace.ClassName), et que le nom du service et l'interface sont identiques à l'attribut name de la balise de service et contrat de point de terminaison dans le web.config.

3
répondu Venkata Deekshit Ganti 2018-04-11 20:50:57

J'ai changé le chemin de sortie du service. il devrait être dans le dossier bin du projet de service. Une fois que j'ai remis le chemin de sortie à bin, cela a fonctionné.

2
répondu Gokul 2015-06-26 20:47:33

Faites un clic droit sur le .fichier svc dans L'Explorateur de solutions et cliquez sur View Markup

 <%@ ServiceHost Language="C#" Debug="true" 
     Service="MyService.**GetHistoryInfo**" 
     CodeBehind="GetHistoryInfo.svc.cs" %>

Mettez à jour la référence de service à laquelle vous faites référence.

1
répondu Joe 2018-01-11 00:30:54

Vérifiez les versions des projets. net. Les projets qui se référencent les uns aux autres avec différentes versions. net causent des problèmes.

0
répondu Mehmet 2015-05-26 12:13:26

Dans mon cas, j'ai fait un "Convertir en application" dans le mauvais dossier sur iis. Mon application a été définie dans un sous-dossier où elle aurait dû être.

0
répondu Navy Seal 2015-06-05 10:09:22

J'ai eu cette erreur quand j'ai eu la configuration de construction actuelle dans Visual Studio définie sur autre chose que Debug.

0
répondu BineG 2015-07-23 06:09:31

J'ai aussi eu le même problème. Volontairement mon chemin de sortie de construction était "..\ bin "et cela fonctionne pour moi quand je définis le chemin de sortie de construction comme "\ bin".

0
répondu K.Kirivarnan 2015-09-10 03:24:26

C'est un vieux bug, mais je l'ai rencontré aujourd'hui sur un service web qui avait à peine été modifié depuis sa création via "New \ Project.."

Pour moi, ce problème a été causé par le fichier "IService.cs " contenant ce qui suit:

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

Notez que la valeur de l'attributService contient ".svc" à la fin.

Ça ne devrait pas être là.

La suppression de ces 4 caractères a résolu ce problème.

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

Notez que vous devez ouvrir ce fichier depuis L'extérieur de Visual Studio.

Visual Studio affiche un fichier, Service1.cs dans l'Explorateur de solutions, mais que seulement il vous permet de modifier Service1.svc.cs, pas le Service1.svc fichier.

-1
répondu Mike Gledhill 2015-08-13 11:40:42