2010-07-28 103 views
2

当我创建Windows服务以从Web应用程序(ASP.NET c#)获取信息以调度客户端计算机中的某个任务。如何通过Windows服务使用Windows Communication Foundation(WCF)

从Web应用程序中使用WCF。我将WCF参考 添加到Window Service项目作为服务参考,一切看起来都很好。它 更新app.config文件,添加服务参考等 它无法正常工作。任何想法都会非常有帮助。

我的代码如下所示

string result = string.Empty; 

BasicHttpBinding myBinding = new BasicHttpBinding(); 
EndpointAddress myEndpoint = new EndpointAddress("http://test.com/Service.svc/DevicesService"); 

using (ChannelFactory<IDevicesService> myChannelFactory = new ChannelFactory<IDevicesService>(myBinding, myEndpoint)) 
{ 

    IDevicesService wcfClient1 = myChannelFactory.CreateChannel(); 
    result = wcfClient1.CheckNetworkConnection(IPLocalHost); 

    if (!string.IsNullOrEmpty(result) && result.Equals(IPLocalHost)) 
    { 
     EventLog.WriteEntry("Test connection succeeded"); 

    } 
    else 
    { 
     EventLog.WriteEntry("No live connection currently available"); 

    } 

    ((IClientChannel)wcfClient1).Close(); 

} 
+3

“它不工作”不是一个非常精确的问题描述,至少不够精确以得到任何可行的答案。你能更具体一点吗?你是否遇到异常?如果是粘贴确切的消息和堆栈跟踪。 – 2010-07-28 09:36:17

+0

当我使用fiddler测试时,Windows服务没有调用wcf方法(“CheckNetworkConnection”)从远程服务器获取数据。现在运行Windows服务时没有显示错误。我没有足够的知识来调试windows服务 – amexn 2010-07-28 09:46:16

+0

调试Windows服务,请参阅http://stackoverflow.com/questions/1982636/debugging-windows-services/1982734#1982734。 – 2010-07-28 15:55:53

回答

4

我发现很容易,建立一个Windows服务时,构建执行同样的工作,该服务将控制台应用程序。我将实际的工作代码(例如上面的代码片段)抽象为一个单独的程序集,然后从我的服务的启动方法或控制台的主要方法中调用它。

如果将上面的代码移动到控制台应用程序中,它是否工作?如果没有,你可以通过它,让我们知道它失败的地方。当它失败时,你看到了什么异常信息?

让我们知道,我们会帮助!

相关问题