2012-03-21 11 views
13

ciśgle niewyjaśnione wyjątekżyczenie „” ma zastosowanie zero (non-infrastruktura) punkty końcowe

Service 'EmployeeManagerImplementation.EmployeeManagerService' has zero application (non-infrastructure) 
endpoints. This might be because no configuration file was found for your application, 
or because no service element matching the service name could be found in the configuration file, or because no endpoints were defined in the service element. 

Iv'e natknąć innych stanowisk, które rozwiązać ten problem, ale nikt nie wydaje się mieć dokładną odpowiedź, a ich rozwiązania nie działały dla mnie.

Service has zero application (non-infrastructure) endpoints

wszelkich sposobów, oto mój app.config

<system.serviceModel> 
    <services> 
     <service name="Some.Test.EmployeeManagerService"> 
      <endpoint address="net.tcp://localhost:8080/Service" binding="netTcpBinding" 
       bindingConfiguration="" contract="Contracts.IEmployeeManagerService" /> 
      <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/> 
     </service> 
    </services> 
</system.serviceModel> 

mój kontraktu:

[ServiceContract(Namespace="Some.Test")] 
public interface IEmployeeManagerService 
{ 
    [OperationContract] 
    string Test();  
} 

Moje życzenie:

public class EmployeeManagerService : IEmployeeManagerService 
{ 
    public string Test() 
    { 
     return "test"; 
    } 
} 

w Powiązane osoby zamieścić ogłoszenie vii, aby nadać kontrakcie nazwę obszaru i użyć go jako prefiksu w pliku app.config do wpisania nazwy w zakładce usługi.

również była sugestia, aby odsłonić punkt końcowy mex ... Naprawdę nie widzę, co to ma z tym zrobić, ale zrobiłem to w dowolny sposób.

, więc wszelkie pomysły, dlaczego tak się dzieje? i jak naprawdę rozwiązać ten problem?

+6

o'k okazuje jest to konieczne, aby dać atrybut nazwa usługi samo dokładna nazwa jak wdrożenie w tym namespace EmployeeManagerImplementation.EmployeeManagerService dzięki @Johann Blais http ://przepełnienie stosu.com/questions/5270956/service-x-has-zero-application-endpoints-unless-i-add-an-endpoint-in-code-wh –

+2

Powinieneś dodać to jako odpowiedź i zaakceptować. – flayn

+0

Umieściłem link do odpowiedzi, która pomogła mi ... równie dobrze :) –

Odpowiedz

10

Od swój komentarz:

Ustaw atrybut nazwa usługi na dokładnie takiej samej nazwie jak wdrożenie w tym obszarze nazw

<service name="EmployeeManagerImplementation.EmployeeManagerService">

1

Nazwa usługi powinny być takie same jak plik klasy implementujący interfejs tj. interfejs.

namespace WCFDemo 
{ 
    public interface IWorker 
    { 
    } 
} 

i załóżmy, że wdrożone go jako

namespace WCFDemo 
{ 
    public class WorkHere:Iworker 
    { 
    } 
} 

Następnie nazwa usługi będzie <service name="WCFDemo.WorkHere">

2

Kopiowanie app.config ze służby do pocieszyć aplikację, która jest gospodarzem usługę

Jeśli utworzyłeś usługę jako projekt biblioteki klas i korzystasz z aplikacji konsoli do hostowania go, a następnie po prostu skopiuj aplikację. plik konfiguracyjny z usługi do aplikacji konsoli

+0

dlaczego uważasz, że app.config nie jest umieszczony we właściwym miejscu? Nawet ja zadałem to pytanie 3 lata temu. Właśnie to przeczytałem i nie rozumiem, jak doszedłeś do wniosku, że to jest problem. mój pierwszy komentarz opisuje, jak to rozwiązałem. –

+0

Ten jeden rozwiązany problem dla mnie. Powodem jest oddzielenie umów serwisowych i instalatora. Tak więc nie zdawałem sobie sprawy, że mój instalator usług również potrzebuje konfiguracji. Uaktualnianie tej odpowiedzi. – Bassist

0

Dla mojego problemu, ustawiłem poprawnie wszystkie przestrzenie nazw. Ale nie udało mi się dodać punktu końcowego basicHttpBinding dla samej usługi. Zobacz this MSDN article, pierwszą sekcję konfiguracji XML dla przykładu.

Powiązane problemy