服务''没有应用程序(非基础结构)端点

时间:2012-03-21 23:22:02

标签: wcf

我一直得到一个无法解释的例外

 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.

我遇到过其他已经解决了这个问题的帖子,但似乎没有人能够准确地解决这个问题 回答,他们的解决方案没有为我工作。

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终点...... 我真的不知道这是怎么回事,但我做了任何事情。

所以有关为什么会这样的想法? 以及如何真正解决这个问题?

4 个答案:

答案 0 :(得分:10)

来自您自己的评论:

将服务的name属性设置为与包含命名空间

的实现完全相同的名称

<service name="EmployeeManagerImplementation.EmployeeManagerService">

答案 1 :(得分:2)

将app.config从服务复制到托管服务的控制台应用

如果您已将服务创建为类库项目,并且您正在使用控制台应用程序来托管它,则只需将app.config文件从服务复制到控制台应用程序中

答案 2 :(得分:1)

服务名称应与实现接口的类文件相同,即接口。

    namespace WCFDemo
{
    public interface IWorker
    {
    }
}

并假设您将其实现为

namespace WCFDemo
{
   public class WorkHere:Iworker
  {
  }
}

然后服务名称  <service name="WCFDemo.WorkHere">

答案 3 :(得分:0)

对于我的问题,我也正确设置了所有命名空间。但我没做的是为服务本身添加一个basicHttpBinding端点。有关示例,请参阅this MSDN article,第一个XML配置部分。