我有一个 WCF 服务,用于公开数据源(通过 EF 模型连接)。由于某种原因,我的端点刚刚停止响应。
直到我最后一次更改之前,我只是在我的应用程序启动时提取数据。我现在正在努力在此基础上添加一个订阅/发布模型,这样我就可以在 WCF 服务遇到导致数据更改的事件时引发事件(可以在客户端执行此操作,但我不会捕获其他用户变化)。
我一直在关注 Microsoft 的示例:http: //msdn.microsoft.com/en-us/library/ms752254.aspx并为我的服务接口和实现添加了适当的装饰,并添加了订阅/取消订阅 OperationContract 等。我而不是尝试启动服务并且无法连接。
然后我从我的客户那里删除了服务参考并尝试重新附加。这是奇怪的事情:
1) WCF 服务在开发者主机中构建和启动。2) 未触及 Web.Config 文件。3)vs 2012 中添加服务参考中的“发现服务”选项可以看到该服务,但是当我尝试实际接受发现的服务时,它会抛出一个错误,提示“从地址下载元数据时出错。
我不明白它如何发现服务,然后无法将其添加为参考。我可以看看我是否自己添加了信息,但它找到了。
作为添加发布功能的一部分,我将 SessionMode.Required 标记添加到界面中,我不太确定 WCF 如何处理会话,也不必在我的编码中的其他任何地方处理会话(通常从源中提取数据而不是在本地处理它是我过去需要制作的工具类型,因此不需要在服务器端保留任何状态)。
有任何想法吗?
我的服务 web.config:
<connectionStrings> <add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider
连接字符串="数据源=winhacker\sqlexpress;初始目录=TaskDB;集成安全=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient"/>
注意:请注意,确保大多数文件的格式化不会显示在预览中,但足以说明它是自动生成的样板文件,而不是我添加了一个 connectionStrings 部分来喜欢我的 EF 数据点。如果您想查看文件,单击“编辑”似乎会显示我复制的源代码,尽管格式有点奇怪。