使用windows服务的WCF
我正在创建一个WCF服务,该服务将托管在Windows服务中。我创建了一个控制台应用程序,如下所示 我转到管理控制台(services.msc)并启动了服务。但是我犯了以下错误 上的LijosWindowsService服务 本地计算机启动,然后 停止。有些服务停止 如果他们没有工作要做,则自动执行 例如,执行性能日志 和警报服务 我转到事件查看器,得到了以下内容 服务无法启动。 System.InvalidOperationException: 服务“Lijo.样品.天气服务” 没有应用程序 (非基础设施)端点。这 可能是因为没有配置文件 为您的应用程序找到,或 因为没有匹配的服务元素 在中可以找到服务名称 配置文件,或者因为没有 端点已在服务中定义 元素 你能告诉我这里缺少的链接是什么吗 文件名[LijosService.cs]使用windows服务的WCF,wcf,Wcf,我正在创建一个WCF服务,该服务将托管在Windows服务中。我创建了一个控制台应用程序,如下所示 我转到管理控制台(services.msc)并启动了服务。但是我犯了以下错误 上的LijosWindowsService服务 本地计算机启动,然后 停止。有些服务停止 如果他们没有工作要做,则自动执行 例如,执行性能日志 和警报服务 我转到事件查看器,得到了以下内容 服务无法启动。 System.InvalidOperationException: 服务“Lijo.样品.天气服务” 没有应用程序
using System.ComponentModel;
using System.ServiceModel;
using System.ServiceProcess;
using System.Configuration;
using System.Configuration.Install;
namespace Lijo.Samples
{
[ServiceContract(Namespace = "http://Lijo.Samples")]
public interface IWeather
{
[OperationContract]
double Add(double n1, double n2);
}
public class WeatherService : IWeather
{
public double Add(double n1, double n2)
{
double result = n1 + n2;
return result;
}
}
public class MyWindowsService : ServiceBase
{
public ServiceHost serviceHost = null;
public MyWindowsService()
{
// Windows Service name
ServiceName = "LijosWindowsService";
}
public static void Main()
{
ServiceBase.Run(new MyWindowsService());
}
protected override void OnStart(string[] args)
{
if (serviceHost != null)
{
serviceHost.Close();
}
serviceHost = new ServiceHost(typeof(WeatherService));
serviceHost.Open();
}
protected override void OnStop()
{
if (serviceHost != null)
{
serviceHost.Close();
serviceHost = null;
}
}
}
// ProjectInstaller
[RunInstaller(true)]
public class ProjectInstaller : Installer
{
private ServiceProcessInstaller myProcess;
private ServiceInstaller myService;
public ProjectInstaller()
{
myProcess = new ServiceProcessInstaller();
myProcess.Account = ServiceAccount.LocalSystem;
myService = new ServiceInstaller();
myService.ServiceName = "LijosWindowsService";
Installers.Add(myProcess);
Installers.Add(myService);
}
}
}
App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service name="Lijo.Samples.WeatherService"
behaviorConfiguration="WeatherServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8000/ServiceModelSamples/LijosService"/>
</baseAddresses>
</host>
<endpoint address=""
binding="wsHttpBinding"
contract="Lijo.Samples.IWeather" />
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="WeatherServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="False"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
谢谢
Lijo您的配置和代码看起来不错-您确定(yourapplication).exe所在的目录中有一个(yourapplication).exe.config文件,即您作为服务启动的目录吗
错误消息将指示配置文件丢失。确保它在那里-否则您的NT服务无法根据需要设置WCF服务。确保在WCF服务和Windows服务中指定相同的app.config。如果这也无助于从WCf服务中删除app.config,请在windows服务中手动配置aap.config并将其复制到WCf服务。这肯定会解决你的问题…你的配置和代码看起来很好-你确定在
(你的应用程序).exe
所在的目录中有一个(你的应用程序).exe
文件,就是你作为你的服务启动的文件吗?谢谢你…当我将exe.config放入所需文件夹时,一切都正常。