2014-01-13 201 views
5

当我尝试加载从web服务方法无法处理该请求,我得到一个错误:服务器由于内部错误

“服务器由于内部错误无法处理该请求有关。有关错误的更多信息,请打开服务器上的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,我看不到更多信息事件。 有人可以告诉我如何查看有关此错误的更多详细信息?

+2

不要使WCF跟踪,看看发生了什么事情。请参阅http://stackoverflow.com/a/4271597/870604 – ken2k

+0

我编辑了您的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –

回答

1

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

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

所以,原因:Web服务没有工作。
解决方案:开始服务localy:Rb - >创建新服务。

6

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

我看到两个选项,这两个假设您可以访问服务器:

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

  • 使用实际断点调试 这样会更好。在我看来,没有错误信息实际上可以给你一个调试会话的见解。

希望我帮了忙!

+0

感谢您的快速响应! 不幸的是,这个解决方案仍然不适合我。 我认为原因是我不通过F5运行服务实例,但在我的控制台应用程序项目上运行RB并执行:Debug-> start new instance。 所以我不加载完全的服务定义,但尝试从客户端节点端点加载服务。 调试不适用于我,当我尝试将断点放入我的代码时,调试器未输入到它。 任何想法? – codelikeprogrammerwoman

+0

我没有必要的见解我的朋友......如果我想到什么,我会告诉你。 –

1

在本地运行时,可以使用ToolsAttach to Process附加到该服务来调试该服务。

在可用进程的列表中,查找进程W3wp.exe,类型Managed (...) x64Managed (...) x86,具体取决于您将服务配置为运行的配置。

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

请注意,您需要以调试模式发布您的WS以使其工作。

+0

感谢您的回复! 是的,我试图附加进程,但我没有进程像w3wp或托管..等;/ 也许这将是有益的,如果我解释我做什么来测试我的应用程序: 我运行localy我的服务应用程序是基于localhost:12708。 接下来我回到我的解决方案与控制台应用程序,RB在我的应用程序,然后单击:Debug-> Start new instance。 我不知道我应该攻击哪个进程;/ – codelikeprogrammerwoman

+0

@codelikeprogrammerwoman好的;我假设你已经发布到IIS服务器。如果你只是从VS运行它,你可能会发现一个名为“WebDev.WebServer40.EXE”的进程。它应该有一个标题,如“ASP.NET Development Server - Port 12708”(同时确保在查找_Attach到Process_列表中的过程之前尝试运行该服务来启动该过程)。 – Kjartan

+0

我的服务已启动,因为我在WCF服务主机中看到“Status = Started”。 在进程列表中,我没有像webdev,w3wp,portnumber等进程;/ 只有一个服务看起来是合适的:标题中有[path_to_my_solution.project_name.exe],类型中有Managed(...)但它仍然不起作用;/ – codelikeprogrammerwoman

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>