2012-05-20 7 views
0

J'ai créé site Web pour héberger le service Web lors de l'exécuter augmenter l'erreur d'exécutionne peut pas accueillir le service WCF

Le nom du contrat « ITry » n'a pas pu être trouvée dans la liste des contrats mis en œuvre par le service « Try ».

mon interface service WCF et le look classe comme

namespace test1 
{ 
    [ServiceContract] 
    public interface ITry 
    { 
     [OperationContract] 
     [WebInvoke(Method = "GET", 
     ResponseFormat = WebMessageFormat.Json, 
     UriTemplate = "data/{username}/{password}")] 
     string Login(string username, string password); 
    } 
} 

mise en œuvre du service:

namespace test1 
{ 
    public class Try : ITry 
    { 
     public string Login(string username, string password) 
     { 
      using (var instance = new FacultySystemEntities1()) 
      { 
       var user = instance.Users.Where(u => u.UserName == username && u.UserPassword == password).FirstOrDefault(); 

       if (user != null) 
        return "true"; 
       else 
        return "false"; 
      } 
     } 
    } 
} 

et le site Web, web.config est ressembler à

<configuration> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0"/> 
    </system.web> 
    <system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="false"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/> 
    <services> 
     <service name="test1.Try"> 
     <endpoint address="http://localhost:8732/Try" binding="webHttpBinding" contract="ITry"/> 
     </service> 
    </services> 
    </system.serviceModel> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 
</configuration> 
+0

double possible de [Quel est le problème avec ce WCF] (http://stackoverflow.com/questions/10668838/whats-wrong-with-this-wcf) –

Répondre

2

Mettre à jour l'attribut de contrat de "ITry" à "test1.ITry" dans le web.config.

<services> 
    <service name="test1.Try"> 
    <endpoint address="http://localhost:8732/Try" binding="webHttpBinding" contract="test1.ITry"/> 
    </service> 
</services> 
+0

+1 exactement - à la fois le nom '' = l'attribut de la balise '' ainsi que l'attribut 'contract =' de la balise '' doivent inclure les noms ** complets ** (interface/nom de classe ** incluant ** tous les espaces de noms .NET!) –

+0

il donne maintenant cette erreur Lorsque 'system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled' est défini sur true dans la configuration, les points de terminaison sont requis pour spécifier une adresse relative. Si vous spécifiez un URI relatif d'écoute sur le noeud final, l'adresse peut être absolue. Pour résoudre ce problème, spécifiez un uri relatif pour le point de terminaison 'http: // localhost: 8732/Try'. – AMH

+0

merci cela a fonctionné maintenant très bien – AMH

Questions connexes