2013-03-12 42 views
0

我一直在开发一个Windows服务,并在其中托管WCF服务。在整个开发过程中,我都能够成功安装和启动我的服务,并在添加功能时测试功能。不过,我最近增加了一个方法,我的服务合同:操作合同定义导致Windows服务不响应控制功能

[OperationContract] 
void StartWebsiteProcessing(WebsiteInfo info); 

这种方法,当一个WCF客户端调用调用这个方法:

public void StartWebsiteProcessing(WebsiteInfo info) 
{ 
    Thread t = new Thread(this.AddWebsite); 
    t.Start(info); 
} 

现在,当我安装服务,当我去开始服务我收到此消息:

“该服务没有响应控制功能。”

从那里我开始解开我一个接一个地尝试确定是什么原因造成的。我发现如果从服务合同中删除StartWebsiteProcessing方法,我可以再次成功启动服务。

任何人都可以向我解释为什么会发生这种情况吗?

+0

确实WebsiteInfo具有所需DataContract /数据成员的注释? – nvoigt 2013-03-12 16:47:01

+0

因为我不知道这些是什么,我猜不是。你能解释一下吗? – Valevalorin 2013-03-12 18:04:23

+0

如果您有复杂的类型(即类或结构体)作为参数或返回值,则需要告诉序列化程序如何处理它们。类本身需要具有[DataContract]属性,并且所有数据成员都需要[DataMember]属性,就像您为服务具有[ServiceContract]和[OperationContract]一样。如果您在Visual Studio中打开一个新的默认WCFService1项目,请查看此处使用的示例复杂类型。 – nvoigt 2013-03-12 18:46:05

回答

0

你有没有尝试过这样的:

[OperationContract(IsOneWay=true)] 
void StartWebsiteProcessing(WebsiteInfo info); 
+0

你有没有试过? – 2014-06-18 11:58:37