由于内部错误,服务器无法处理请求
Posted
技术标签:
【中文标题】由于内部错误,服务器无法处理请求【英文标题】:The server was unable to process the request due to an internal error 【发布时间】:2014-01-31 23:05:56 【问题描述】:当我尝试从 web 服务加载方法时,我得到一个错误:
“。有关错误的详细信息,请在服务器上打开 IncludeExceptionDetailInFaults(来自 ServiceBehaviorAttribute 或来自配置行为),以便将异常信息发送回到客户端,或根据 Microsoft .NET Framework SDK 文档打开跟踪并检查服务器跟踪日志”
这是我的 app.config 端点定义:
<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,我将看不到更多信息事件。 有人可以告诉我如何查看有关此错误的更多详细信息吗?
【问题讨论】:
启用 WCF 跟踪以查看发生了什么。见***.com/a/4271597/870604 我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。 【参考方案1】:错误信息非常清楚。出于安全原因,服务器被配置为隐藏内部错误。这是根据fault handling in WCF MSDN post 的默认行为。
我看到两个选项,都假设您可以访问服务器:
启用显示错误详细信息 请参阅fault handling in WCF MSDN post。它在“发生异常时提供附加信息”部分中提供了有关如何设置配置的详细信息。
使用实际断点进行调试 这会更好。在我看来,没有任何错误消息可以真正为您提供调试会话所做的见解。
希望我能帮上忙!
【讨论】:
感谢您的快速回复!不幸的是,这个解决方案仍然不适合我。我认为原因是我没有通过 F5 运行服务实例,而是在我的控制台应用程序项目上运行 RB 并执行:调试-> 启动新实例。所以我没有完全加载服务定义,而是尝试从客户端部分的端点加载服务。调试对我不起作用,当我尝试在我的代码中放置断点时,调试器没有输入。有什么想法吗? 我没有必要的见解我的朋友...如果我有什么想法,我会告诉你。【参考方案2】:解决方案:我的服务没有启动。 因为我们在本地运行服务,所以我需要打开所需的解决方案并通过 RG 在本地运行服务 -> 创建新实例。
我怎么知道这件事?我的日志文件存储在 c:/temp 中。 在这个位置,出现了一个新的日志文件,在那里我找到了有关我的错误的更多信息。 (我一直在想关于我的错误消息的详细信息会进入我的基本日志文件,但我没想到另一个日志文件。
所以,原因:网络服务不起作用。解决方案:在本地启动服务:Rb -> 创建新服务。
【讨论】:
【参考方案3】:在本地运行时,您可以通过使用Tools
-> Attach to Process
附加到服务来调试服务。
在可用进程列表中,查找进程W3wp.exe
,类型为Managed (...) x64
或Managed (...) x86
,具体取决于您将服务配置为运行什么。
单击Attatch
,在您的服务中设置几个断点,然后尝试在您的网络浏览器中再次访问它,它们应该会被命中。
请注意,您需要在调试模式下发布您的 WS 才能正常工作。
【讨论】:
感谢您的回复!是的,我尝试附加进程,但我没有 w3wp 或 Managed .. 等进程;/ 如果我解释我如何测试我的应用程序可能会有所帮助:我在本地运行基于 localhost 的服务应用程序: 12708。接下来,我使用控制台应用程序回到我的解决方案,RB 在我的应用程序上,然后单击:调试-> 启动新实例。我不知道我应该攻击哪个进程;/ @codelikeprogrammerwoman 好的;我假设您已发布到 IIS 服务器。如果你只是从 VS 运行它,你可能会发现一个名为WebDev.WebServer40.EXE
的进程。它应该有一个像ASP.NET Development Server - Port 12708
这样的标题(在附加到进程列表中查找进程之前,请确保你已经通过尝试运行服务来启动进程)。
我的服务已启动,因为我在 WCF 服务主机中看到“状态 = 已启动”。在进程列表中,我没有 webdev、w3wp、portnumber 等进程;/ 只有一项服务看起来合适:在标题中有 [path_to_my_solution.project_name.exe],在类型中有 Managed(...) 但它还是不行;/
有一个进程我无法附加,因为我收到错误“无法附加到进程。调试器已附加”但它没有;/奇怪...跨度>
【参考方案4】:
您应该在配置文件中添加诊断:
<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>
【讨论】:
以上是关于由于内部错误,服务器无法处理请求的主要内容,如果未能解决你的问题,请参考以下文章
PayPal - 10001 内部错误:超时处理请求快速结帐
尝试使用 ErrorDocument 处理请求时出现 500 内部服务器错误
500 - 内部服务器错误.您查找的资源存在问题,因而无法显示.