【问题标题】:Service '' has zero application (non-infrastructure) endpoints服务“”有零个应用程序(非基础设施)端点
【发布时间】:2012-04-06 13:00:41
【问题描述】:

我不断收到无法解释的异常

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

在相关帖子中,人们建议给合同一个命名空间,并将其用作我的 app.config 中服务选项卡中名称的前缀。

还有一个建议是公开 mex 端点... 我真的不明白这与它有什么关系,但我以任何方式做到了。

所以对为什么会发生这种情况有任何想法吗? 以及如何真正解决这个问题?

【问题讨论】:

  • o'k 事实证明,需要为服务的 name 属性提供与实现相同的名称,包括命名空间 感谢@Johann Blais @987654322 @
  • 您应该将此添加为答案并接受它。
  • 我放了一个对我有帮助的答案的链接......同样好:)

标签: wcf


【解决方案1】:

来自您自己的评论:

将服务的名称属性设置为与包括命名空间的实现完全相同的名称

&lt;service name="EmployeeManagerImplementation.EmployeeManagerService"&gt;

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 为什么您认为 app.config 没有放在正确的位置?即使我在 3 年前问过这个问题。我刚读过它,我不明白你是如何断定这是问题所在。我的第一条评论描述了我是如何解决它的。
    • 这个解决了我的问题。原因是我已经分离了服务合同和安装程序。所以我没有意识到我的服务安装程序也需要配置。赞成这个答案。
    【解决方案3】:

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

        namespace WCFDemo
    {
        public interface IWorker
        {
        }
    }
    

    并假设您将其实现为

    namespace WCFDemo
    {
       public class WorkHere:Iworker
      {
      }
    }
    

    那么服务名称将是 &lt;service name="WCFDemo.WorkHere"&gt;

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2011-01-20
        • 2011-05-16
        • 2019-03-15
        • 1970-01-01
        • 2010-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多