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方法,我可以再次成功启动服务。
任何人都可以向我解释为什么会发生这种情况吗?
确实WebsiteInfo具有所需DataContract /数据成员的注释? – nvoigt 2013-03-12 16:47:01
因为我不知道这些是什么,我猜不是。你能解释一下吗? – Valevalorin 2013-03-12 18:04:23
如果您有复杂的类型(即类或结构体)作为参数或返回值,则需要告诉序列化程序如何处理它们。类本身需要具有[DataContract]属性,并且所有数据成员都需要[DataMember]属性,就像您为服务具有[ServiceContract]和[OperationContract]一样。如果您在Visual Studio中打开一个新的默认WCFService1项目,请查看此处使用的示例复杂类型。 – nvoigt 2013-03-12 18:46:05