“服务X没有应用程序端点”,除非我在代码中添加端点 – 为什么?
我按照这篇MSDN文章彻底创建了托管在NT服务中的WCF服务。
当我在服务控制台中单击“开始”时,我在事件查看器中看到以下内容:
服务无法启动。 System.InvalidOperationException:服务’MyServiceNamespace.RequestProcessorImpl’没有应用程序(非基础结构)端点。 这可能是因为没有为您的应用程序找到配置文件,或者因为在配置文件中找不到与服务名称匹配的服务元素,或者因为在service元素中没有定义端点。
我试着查看我能找到的所有可能的原因。 这是App.Config文件中的服务描述:
所有实体都以其命名空间命名 ,因此这不是问题。 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(); } }
到下一个,以便它调用AddServiceEndpoint()
服务启动正常(但我不能添加对它的引用,所以我猜其他错误):
public class RequestProcessorWindowsService : ServiceBase { public ServiceHost serviceHost = null; //other methods skipped protected override void OnStart(string[] args) { if( serviceHost != null ) { serviceHost.Close(); } Uri baseAddress = new Uri("http://localhost:8095/RequestProcessorService"); serviceHost = new ServiceHost( typeof(RequestProcesssorImpl), baseAddress ); serviceHost.AddServiceEndpoint( typeof(IRequestProcessor), new BasicHttpBinding(), baseAddress ); serviceHost.Open(); } }
为什么我的服务在通过App.Config配置时没有启动?
配置文件中的服务名称与服务实现类不匹配。
配置文件应包含:
- Linq-to-SQL中的SubmitChanges与Entity Framework中的SaveChanges之间的技术差异是什么?
- C#AsyncCallback是否创建了一个新线程?
- 如何在c#中使用XMLSerialize for Enum类型的属性?
- 使用InstallUtil安装具有启动参数的Windows服务
- 实现IQueryable包装器以转换结果对象
- 可以在WinForms中使用’DeviceWatcher’吗?
- 是否有更好的方法来限制高吞吐量的工作?
- 从自定义PictureBox控件翻译不同大小的图像的点(X,Y)
- 如何将布尔值绑定到GridViewColumn复选框(有代码但不起作用)?