12

Receiving this error when trying to work with the queue:

Unexpected error occured: The communication object, System.ServiceModel.ServiceHost, cannot be used for communication because it is in the Faulted state. at System.ServiceModel.Channels.CommunicationObject.Close(TimeSpan timeout)

How to overcome it?

Update: answer to my solution posted at the end

4

5 回答 5

12

这个问题是由于访问权限。使用管理权限启动 Visual Studio,问题将得到解决。要以管理员权限启动 Visual Studio,请右键单击 Visual Studio 图标并选择“以管理员身份运行”。

于 2015-02-05T01:24:18.340 回答
8

更新:就我而言,有帮助的是:

1)启用跟踪日志:http: //msdn.microsoft.com/en-us/library/ms732023.aspx

2)在跟踪日志中它写道:

绑定验证失败,因为绑定的 ExactlyOnce 属性设置为 true,而目标队列是非事务性的。服务主机打不开。通过将 ExactlyOnce 属性设置为 false 或为此绑定创建事务队列来解决此冲突。

答案说明了一切。创建了一个事务队列 - 一切正常 :) 希望它可以帮助人们 :)

于 2013-09-09T12:24:47.497 回答
2

关闭您的解决方案,现在按照以下步骤操作: 1. 右键单击​​ Visual Studio。2. 单击以管理员身份运行。3. 现在打开您的解决方案。4.尝试运行它,您的问题将得到解决。

于 2018-10-03T18:52:54.003 回答
1

根据我的经验,一旦端点处于故障状态,它就不会自行恢复,需要重新启动。没有办法从客户端实现这一点。主人必须这样做。

在主机端,您可以使用如下代码检查故障状态:

  While True
      'broken connection case
      If objServiceHost(ii).State <> CommunicationState.Opened Then
        Throw New Exception("SynchronizationWS Service Host failed.") 
        Exit While
      End If
    Next
    Threading.Thread.Sleep(c_SleepTime) 'sleep 1 second before going trying next
  End While

我们有一个更高级别的程序来监视我们的 Web 服务(在 Windows 服务中运行)的心跳,如果更高级别的程序发现心跳已经停止,它将回收 Windows 服务,重新启动 WCF Web 服务。

于 2013-08-14T11:34:53.567 回答
0

对我来说,这是因为该端口已被另一个进程使用,我更改了端口并且服务照常工作。我通过跟踪跟踪日志知道这一点,只需按照此处的步骤操作:https ://docs.microsoft.com/en-us/dotnet/framework/wcf/service-trace-viewer-tool-svctraceviewer-exe

回顾:

  1. 将此部分添加到 web.config 或 app.config 文件:

    <system.diagnostics>
         <trace autoflush="true" />
         <sources>
                 <source name="System.ServiceModel"
                         switchValue="Information, ActivityTracing"
                         propagateActivity="true">
                 <listeners>
                    <add name="sdt"
                        type="System.Diagnostics.XmlWriterTraceListener"
                        initializeData= "SdrConfigExample.e2e" />
                 </listeners>
              </source>
         </sources>
     </system.diagnostics>
    
  2. 运行 WCF 服务以重现错误。

  3. 打开 SvcTraceViewer.exe 工具,我在 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin 中找到它。它将打开 Microsoft 服务跟踪查看器窗口。

  4. 导航到在上面的 XML 配置中指定的名为“SdrConfigExample.e2e”的日志文件(文件>打开),位于根目录中。这将更详细地列出错误,您可以找到异常的原因。

*提示:您可以使用Everything 工具轻松快速地在计算机上查找文件。

于 2021-10-13T10:39:02.833 回答