相关疑难解决方法(0)

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

我最近创建了一个WCF服务(dll)和一个服务主机(exe).我知道我的WCF服务正常工作,因为我能够成功地将服务添加到WcfTestClient.

但是,当我从服务主机(exe)使用我的WCF时,我似乎遇到了一个问题.我可以向我的服务主机(exe)添加对WCF(dll)的引用,并为exe创建必要的组件; 例如服务安装程序,服务主机和app.config,编译然后最后使用InstallUtil安装exe.但是,当我尝试在Microsoft管理控制台中启动该服务时,该服务在启动后立即停止.

所以我开始调查可能导致此问题的原因是从事件查看器中的应用程序日志中得出此错误.

描述:

服务无法启动.System.InvalidOperationException:服务"服务"具有零应用程序(非基础结构)端点.这可能是因为没有为您的应用程序找到配置文件,或者因为在配置文件中找不到与服务名称匹配的服务元素,或者因为在service元素中没有定义端点.

这个错误实际上是在OnStart; 当我执行此调用时,我的exe ServiceHost.Open().我看过很多其他人遇到过这个问题的帖子,但是大多数(如果不是全部的话)声称服务名称或合同; 命名空间和类名,未指定.我在配置文件中检查了这两个条目; 在exe和dll中,它们完美匹配.我已经让办公室里的其他人仔细检查我,以确保我不会在某一点上失明,但当然他们得出了与我相同的结论,即一切看起来都是正确的.对于此时发生的事情,我真的很迷茫.任何人都可以帮我解决这个问题吗?

另一件可能导致这种情况发生的原因是app.config永远不会被读取; 至少不是我认为应该阅读的那个.这可能是问题吗?如果是这样,我该如何解决这个问题.再次,任何帮助将不胜感激.

.net wcf exception-handling wcf-configuration wcf-endpoint

88
推荐指数
6
解决办法
11万
查看次数

"服务X没有应用程序端点"除非我在代码中添加端点 - 为什么?

我按照这篇MSDN文章彻底创建了托管在NT服务中的WCF服务.

当我在服务控制台中单击"开始"时,我在事件查看器中看到以下内容:

服务无法启动.System.InvalidOperationException:服务'MyServiceNamespace.RequestProcessorImpl'具有零应用程序(非基础结构)端点.这可能是因为没有为您的应用程序找到配置文件,或者因为在配置文件中找不到与服务名称匹配的服务元素,或者因为在service元素中没有定义端点.

我试图检查我能找到的所有可能的原因.这是App.Config文件中的服务描述:

 <service name="MyServiceNamespace.RequestProcessorWindowsService"
           behaviorConfiguration="RequestProcessorServiceBehavior">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8095/RequestProcessorService"/>
      </baseAddresses>
    </host>
    <endpoint address= ""
              binding="wsHttpBinding"
              contract="MyServiceNamespace.IRequestProcessor" />
    <endpoint address="mex"
              binding="mexHttpBinding"
              contract="IMetadataExchange" />
  </service>
Run Code Online (Sandbox Code Playgroud)

所有实体都以其命名空间命名,因此这不是问题所在.App.Config文件放在bin\Debug中 - 确切地说是NT服务的起始位置.

但是当我从原始实现中改变我的ServiceBase后代时OnStart():

public class RequestProcessorWindowsService : ServiceBase {
    public ServiceHost serviceHost = null;
    //other methods skipped 
    protected override void OnStart(string[] args)
    {
        if( serviceHost != null ) {
       serviceHost.Close();
        }
        serviceHost = new ServiceHost( typeof(RequestProcesssorImpl) );
        serviceHost.Open();
    }
}
Run Code Online (Sandbox Code Playgroud)

到下一个,以便它调用AddServiceEndpoint()该服务开始没关系(但我不能添加它的引用,所以我猜其他问题):

public class RequestProcessorWindowsService …
Run Code Online (Sandbox Code Playgroud)

.net c# wcf

11
推荐指数
1
解决办法
2万
查看次数