2012-03-21 4 views
13

エンドポイントしている私は、この問題を解決し、誰もが正確な を持っていると思わなかった他の記事に出くわし原因不明の例外サービス「は」ゼロのアプリケーション(非インフラが)

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を得続けます彼らの解決策のうちのどれも私のために働いていませんでした。

Service has zero application (non-infrastructure) endpoints

いかなる方法

は、ここに私の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> 

私の契約:

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

マイサービス:関連のポスト人々の広告で

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

Contractにネームスペースを与え、それをサービスタブの名前のために私のapp.config内の接頭辞として使用するようにしました。

また、mexエンドポイントを公開するための提案がありました... 私は実際にこれと何をするのか分かりませんが、私はそれをやりました。

これはなぜ起こるのでしょうか? この問題を解決するにはどうすればよいですか?

+6

o'kは、@Johann Blais でhttp おかげサービス 名前空間 含む実装と同じ正確な名称<サービス名=「EmployeeManagerImplementation.EmployeeManagerService」>のname属性を与えるために必要とされる判明します://スタックオーバーフロー。com/questions/5270956/service-x-has-zero-application-endpoints-i-add-an-end-in-code-wh –

+2

これを回答として追加して受け入れる必要があります。 – flayn

+0

私は助けになった答えへのリンクを入れました... と同様に良い: –

答えて

10

ご自身のコメントから:サービスの名前が同じである必要があり、名前空間

<service name="EmployeeManagerImplementation.EmployeeManagerService">

1

含む実装とまったく同じ名前のサービスのname属性を設定し

インタフェース、すなわちインタフェースを実装するクラスファイル。

namespace WCFDemo 
{ 
    public interface IWorker 
    { 
    } 
} 

とは、あなたが次にサービス名は、サービスをホストしているアプリをコンソールにサービスから <service name="WCFDemo.WorkHere">

2

コピーapp.configをだろう

namespace WCFDemo 
{ 
    public class WorkHere:Iworker 
    { 
    } 
} 

として、それを実現したとし

の場合クラスライブラリプロジェクトとしてサービスを作成し、それをホストするコンソールアプリケーションを使用してアプリをコピーするだけです。サービスからコンソールアプリケーションへの設定ファイル

+0

なぜあなたはapp.configが正しい場所に置かれていないと思いますか? でも私は3年前にこの質問をしました。私はちょうどそれを読んで、私はあなたがそれが問題だとどのように結論づけられたか分かりません。 私の最初のコメントは、それをどのように解決したかを記述しています。 –

+0

これは私にとって問題を解決しました。理由は、サービス契約とインストーラを分けているからです。だから私は私のサービスインストーラも設定が必要であることに気付かなかった。この回答をアップしてください。 – Bassist

0

私の問題では、すべての名前空間も正しく設定されていました。しかし、私がしなかったのは、サービス自体のためのbasicHttpBindingエンドポイントを追加することでした。例の最初のXML設定セクションのthis MSDN articleを参照してください。

関連する問題