2012-05-20 3 views
0

Я создал веб-сайт для размещения веб-службы при запуске его поднять ошибки во время выполненияне может разместить службу WCF

Имя контракта «ITry» не может быть найден в списке контрактов, реализуемых с помощью службы «Try».

Мой WCF сервис интерфейс и класс выглядеть реализации

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

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"; 
      } 
     } 
    } 
} 

и веб-сайт, web.config это выглядеть

<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

возможно дубликат [Что случилось с этим WCF] (http://stackoverflow.com/questions/10668838/whats-wrong-with-this-wcf) –

ответ

2

Обновите атрибут контракта от «ITY» до «test1.ITry» в web.config.

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

+1 точно - как '' имя = атрибут тега '', а также атрибут 'contract =' тега '' должны включать ** полностью определенные ** имена (имя интерфейса/класса **, включая ** все пространства имен .NET!) –

+0

он теперь дает эту ошибку. Когда «system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled» установлено в true в конфигурации, конечные точки должны указывать относительный адрес. Если вы указываете относительный URI прослушивания на конечной точке, тогда адрес может быть абсолютным. Чтобы устранить эту проблему, укажите относительный uri для конечной точки «http: // localhost: 8732/Try». – AMH

+0

спасибо, что он работал сейчас verywell – AMH

Смежные вопросы