在服务器上打开 IncludeExceptionDetailInFaults(从 ServiceBehaviorAttribute 或从 配置行为)
我有一个一直运行良好的 WCF 服务,但有些东西发生了变化,我不知道是什么。
我得到这个异常:
System.ServiceModel.FaultException:由于内部错误,服务器无法处理请求。有关错误的详细信息,请在服务器上打开 IncludeExceptionDetailInFaults(从 ServiceBehaviorAttribute 或从配置行为),以便将异常信息发送回客户端,或者根据 Microsoft .NET Framework 3.0 SDK 文档打开跟踪并检查服务器跟踪日志。
这很令人困惑,因为我正在运行 .NET 4.0。
在哪里打开 IncludeExceptionDetailInFaults
?我正在努力寻找它。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
在您的
行为 >.config
文件:然后按照以下方式将行为应用到您的服务:
您也可以通过编程方式设置它。请参阅此问题。
Define a behavior in your
.config
file:Then apply the behavior to your service along these lines:
You can also set it programmatically. See this question.
它位于 app.config 文件中。
It's in the app.config file.
如果您想通过代码执行此操作,可以添加如下行为:
If you want to do this by code, you can add the behavior like this:
您还可以在继承接口 Immortal Blue 的类声明上方的 [ServiceBehavior] 标记中设置它,
不向公开发布的版本公开异常详细信息是正确的,但出于测试目的,这是一个方便的工具。释放时务必关闭。
You can also set it in the [ServiceBehavior] tag above your class declaration that inherits the interface
Immortal Blue is correct in not disclosing the exeption details to a publicly released version, but for testing purposes this is a handy tool. Always turn back off when releasing.
我也遇到了同样的错误,当我在开发环境中使用我的凭据使用 WCF 时,它对我来说工作正常,但是当其他人在测试中使用它时,它会抛出相同的错误。
我做了很多研究,然后没有进行配置更新,而是借助故障异常处理了 WCF 方法中的异常。
此外,WCF 的身份需要使用与数据库中具有访问权限的相同凭据进行设置,有人可能更改了您的权限。
请在下面找到相同的代码:
在您的 service1.svc.cs 中,您可以在 catch 块中使用它:
并在客户端应用程序中使用它,如下面的代码:
只需尝试一下,它将有助于确保获得确切的问题。
I was also getting the same error, the WCF was working properly for me when i was using it in the Dev Environment with my credentials, but when someone else was using it in TEST, it was throwing the same error.
I did a lot of research, and then instead of doing config updates, handled an exception in the WCF method with the help of fault exception.
Also the identity for the WCF needs to be set with the same credentials which are having access in the database, someone might have changed your authority.
Please find below the code for the same:
in your service1.svc.cs you can use this in the catch block:
And use this in the Client application like below code:
Just try this, it will help for sure to get the exact issue.