由于内部错误,服务器无法处理请求

时间:2014-01-13 09:05:37

标签: c# .net wcf endpoint

当我尝试从webservice加载方法时,我收到一个错误:

“由于内部错误,服务器无法处理请求。有关错误的更多信息,请在服务器上启用IncludeExceptionDetailInFaults(来自ServiceBehaviorAttribute或配置行为)以便发回异常信息到客户端,或根据Microsoft .NET Framework SDK文档打开跟踪并检查服务器跟踪日志“

这是我的app.config端点def:

<services>
  <service name="Service" behaviorConfiguration="debug">
</services>

<client>
  <endpoint name="Service" address="net.tcp://localhost:12708/" binding="netTcpBinding" bindingConfiguration="netTcp" contract="path.IService" >
    <identity>
      <servicePrincipalName />
    </identity>
  </endpoint>
</client>

<serviceBehaviors>
    <behavior name="debug">
      <serviceDebug includeExceptionDetailInFaults="True" />
    </behavior>
  </serviceBehaviors>

如果我声明了serviceBehaviors,我看不到更多信息事件。 有人可以告诉我如何才能看到有关此错误的更多详细信息?

4 个答案:

答案 0 :(得分:6)

错误的信息很清楚。出于安全原因,服务器配置为隐藏内部错误。这是根据fault handling in WCF MSDN post的默认行为。

我看到两个选项,都假设你有权访问服务器:

  • 启用显示错误详细信息 请参阅fault handling in WCF MSDN post。它提供了有关如何设置配置的详细信息,请参阅“在发生异常时提供附加信息”部分。

  • 使用实际断点进行调试 这会更好。在我看来,没有错误信息实际上可以为您提供调试会话的见解。

希望我帮忙!

答案 1 :(得分:1)

在本地运行时,您可以使用Tools - &gt;附加服务来调试服务。 Attach to Process

在可用流程列表中,根据您为服务配置的内容,查找流程W3wp.exe,其中包含Managed (...) x64Managed (...) x86

点击Attatch,在您的服务中设置几个断点,然后尝试在您的网络浏览器中再次访问它,它们应该被点击。

请注意,您需要在调试模式下发布WS才能使其正常工作。

答案 2 :(得分:1)

解决方案:我的服务尚未启动。 因为我们在本地运行服务,所以我需要打开所需的解决方案并通过RG本地运行服务 - &gt;创建新实例。

我怎么知道这件事?我的日志文件存储在c:/ temp中。 在这个位置,出现了一个新的日志文件,在那里我发现了有关我的错误的更多信息。 (我一直以为我的错误消息的详细信息会进入我的基本日志文件,但我没想到会有另一个日志文件。

所以,原因:网络服务无法正常工作 解决方案:启动服务localy:Rb - &gt;创造新的服务。

答案 3 :(得分:0)

您应该在配置文件中添加诊断信息:

 <system.diagnostics> 
      <sources> 
        <source name="System.ServiceModel" 
                switchValue="All" 
                propagateActivity="true"> 
          <listeners> 
            <add name="traceListener" 
                type="System.Diagnostics.XmlWriterTraceListener" 
                initializeData= "D:\AppLogs\Traces.svclog" /> 
          </listeners> 
        </source> 
      </sources> 
    </system.diagnostics>