Windows服务中的Wcf库

时间:2010-12-08 11:49:05

标签: c# wcf

我在windows服务中使用wcf库我的wcf libray包含一个包含数据访问层的项目dll。当我尝试启动Windows服务时,我的Windows服务无法启动

例外:

  

无法启动服务。   System.ServiceModel.FaultException:   服务器无法处理   请求由于内部错误。对于   有关错误的更多信息,   要么打开   IncludeExceptionDetailInFaults(或者   来自ServiceBehaviorAttribute或来自   配置   行为)在服务器上   将异常信息发回   客户端,或按照开启跟踪   Microsoft .NET Framework 3.0 SDK   记录并检查服务器   跟踪日志。

     

服务器堆栈跟踪:at   System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(消息   回复,MessageFault错误,字符串   动作,MessageVersion版本,   FaultConverter faultConverter)at   System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime   操作,ProxyRpc& rpc)at   System.ServiceModel.Channels.ServiceChannel.Call(字符串   动作,布尔单向,   ProxyOperationRuntime操作,   Object [] ins,Object [] outs,TimeSpan   超时)at   System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(...

为此,我们在App Config中使用

我的服务电话是

using (ServiceReference1.Service1Client c = new ServiceReference1.Service1Client())
            {
                c.GetZvol();
                c.ChannelFactory.Close();
                c.Close();
            }

但是在添加它之后,启动Windows服务时会出现另一个异常

例外:

  

无法启动服务。   System.ServiceModel.CommunicationObjectFaultedException:   通讯对象,   System.ServiceModel.Channels.ServiceChannel,   不能用于沟通   因为它处于Faulted状态。

     

服务器堆栈跟踪:at   System.ServiceModel.Channels.CommunicationObject.Close(时间跨度   超时)

     

在[0]处重新抛出异常:at   System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(即时聊天   reqMsg,IMessage retMsg)at   System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&安培;   msgData,Int32类型)at   System.ServiceModel.ICommunicationObject.Close(时间跨度   超时)at   System.ServiceModel.ClientBase 1.System.ServiceModel.ICommunicationObject.Close(TimeSpan timeout) at System.ServiceModel.ClientBase 1.关闭()   在   System.ServiceModel.ClientBase`1.System.IDisposable.Dispose()   在ClassDemo.Class1.CreateFile()中   C:\ Users \用户维克拉姆\文件\视觉   工作室   2010 \项目\ mcWindowsService \ ClassDemo \的Class1.cs:行   21点   mcWindowsService.Service1.OnStart(字符串[]   args)...

请有人告诉我解决方案

1 个答案:

答案 0 :(得分:1)

您无法在同一进程中托管并调用wcf服务。您的Windows服务应该只托管wcf dll,您可以从另一个进程(如winforms应用程序或Web应用程序)调用它。