C# 发现的WCF服务可以';t连接
我有一个WCF服务,用于公开数据源(通过EF模型连接)。我的端点由于某种原因停止了响应C# 发现的WCF服务可以';t连接,c#,wcf,.net-4.5,C#,Wcf,.net 4.5,我有一个WCF服务,用于公开数据源(通过EF模型连接)。我的端点由于某种原因停止了响应 <connectionStrings> <add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider 直到最后一次更改
<connectionStrings>
<add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider
直到最后一次更改之前,我只是在启动应用程序时提取数据。我现在正致力于在此基础上添加订阅/发布模型,以便在WCF服务中出现导致数据更改的事件时抛出事件(可以在客户端执行,但不会捕获其他用户的更改)
<connectionStrings>
<add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider
我一直遵循Microsoft的示例:在我的服务界面和实现中添加了适当的装饰,并添加了订阅/取消订阅操作合同等。我尝试启动服务,但无法连接
<connectionStrings>
<add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider
然后,我从我的客户端删除了服务引用,并尝试重新连接。奇怪的是:
<connectionStrings>
<add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider
1) WCF服务在开发人员主机中构建和启动。
2) 未触及Web.Config文件。
3) vs 2012中添加服务参考中的“Discover Services”选项可以看到该服务,但当我尝试实际接受发现的服务时,它会抛出一个错误,显示“从地址下载元数据时出错”
<connectionStrings>
<add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider
我不知道它如何发现服务,然后无法将其添加为引用。我可以查看是否是我自己添加的信息,但它找到了它
<connectionStrings>
<add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider
作为添加发布功能的一部分,我在接口中添加了SessionMode.Required标记,我不确定WCF如何处理会话,也不知道在我的编码中是否需要处理其他任何地方的会话(通常从源代码中提取数据,然后在本地处理它,这是我过去需要使用的工具类型,因此不需要在服务器端持久化状态)
<connectionStrings>
<add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider
有什么想法吗
<connectionStrings>
<add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider
我的服务web.config:
<connectionStrings>
<add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider
<connectionStrings>
<add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider
<connectionStrings>
<add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider
注意:注意:确保格式化过程中的大部分文件不会显示在预览中,但足以说明它是自动生成的样板文件,而不是我添加了一个ConnectionString部分以喜欢我的EF数据点。如果你想查看该文件,请单击“编辑”“似乎显示了我复制的源代码,尽管格式有点奇怪。在我遇到此错误的绝大多数情况下,此问题是服务器端的序列化问题;WCF将在元数据发现阶段对此引发异常,但VS不会显示此异常。”
<connectionStrings>
<add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider
为了解决此问题,您需要在web.config
中添加一个诊断部分,将WCF信息捕获到svclog
文件中,然后使用Microsoft的检查日志并发现引发的实际异常
<connectionStrings>
<add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider
web.config
部分应该如下所示:
<connectionStrings>
<add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="c:\log\WebTrace.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
并在
级别添加
<connectionStrings>
<add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider
添加配置并确保指定的目录存在后,请尝试再次添加服务引用。这将导致生成指定的svclog文件
<connectionStrings>
<add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider
如果您在该计算机上安装了VS,您应该能够在Windows资源管理器中双击该文件,并在该工具中自动打开日志
<connectionStrings>
<add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider
打开日志后,向下查看左侧窗格中的活动列表,单击第一个红色窗格。然后,在右上角窗格中,选择第一个红色窗格(或显示异常,我忘了是哪个)。然后,您可以单击该按钮查看详细信息,包括右下窗格中的异常信息。在我遇到此错误的绝大多数情况下,此问题是服务器端的序列化问题;WCF将在元数据发现阶段对此抛出异常,但VS不会显示此exc感同身受
<connectionStrings>
<add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider
为了解决此问题,您需要在web.config
中添加一个诊断部分,将WCF信息捕获到svclog
文件中,然后使用Microsoft的检查日志并发现引发的实际异常
<connectionStrings>
<add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider
web.config
部分应该如下所示:
<connectionStrings>
<add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="c:\log\WebTrace.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
并在
级别添加
<connectionStrings>
<add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider
添加配置并确保指定的目录存在后,请尝试再次添加服务引用。这将导致生成指定的svclog文件
<connectionStrings>
<add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider
如果您在该计算机上安装了VS,您应该能够在Windows资源管理器中双击该文件,并在该工具中自动打开日志
<connectionStrings>
<add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider
打开日志后,向下查看左侧窗格中的活动列表,单击第一个红色窗格。然后,在右上角窗格中,选择第一个红色窗格(或显示异常,我忘了是哪个)。然后,您可以单击该按钮查看详细信息,包括右下窗格中的异常信息。非常感谢。我回家后会尝试。目前我的开发设备盒上的所有东西都在本地运行,因此我的部分困惑是:VS安装主机并构建服务,找到了可供我的客户端使用的服务,但仍然对它不满意他说:)日志会很好。你关于日志文件的提示很有效。。。至少能让我深入挖掘。我使用的是不支持会话的basichttp连接。然后我查找了它,发现了如何将wshttpbinding与启用的会话连接起来。现在我的合同本身出现了错误,我认为这可能是好的,因为我的代码中仍然有自动实现的接口(抛出NotImplementedException等),所以我猜如果我正确地实现了我的合同,事情会变得更好
<connectionStrings>
<add name="TaskModelContainer" connectionString="metadata=res://*/TaskModel.csdl|res://*/TaskModel.ssdl|res://*/TaskModel.msl;provider=System.Data.SqlClient;provider