我正在尝试尝试使用WCF服务。我获得了svc文件的URL。 1.创建Windows表单应用程序 2.添加了对svc文件的服务引用 3.在表单加载事件期间我的代码中,我调用服务公开的方法
ServiceReference1.SearchServiceClient search = new WindowsFormsApplication1.ServiceReference1.SearchServiceClient();
var serviceResult = search.SearchByClientNumber("1");
我收到此错误 由于内部错误,服务器无法处理请求。有关错误的更多信息,请在服务器上启用IncludeExceptionDetailInFaults(来自ServiceBehaviorAttribute或配置行为)以将异常信息发送回客户端,或者根据Microsoft .NET Framework 3.0 SDK文档启用跟踪并检查服务器跟踪日志。“
我可以使用WCFTestClient调用该方法,但不能在我的应用程序中调用。
我的测试应用配置文件中是否需要进行一些更改?
有一节<client>
<endpoint address="http://somewhere.com/Service.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISearchService"
contract="ServiceReference1.ISearchService" name="BasicHttpBinding_ISearchService" />
</client>
答案 0 :(得分:6)
当从服务中引发异常并且无法返回消息时,会发生此错误。
如果您有权访问服务代码,只需执行异常状态(“ ...启用IncludeExceptionDetailInFaults(来自ServiceBehaviorAttribute或来自配置行为)... ”)按顺序调试。
示例<serviceBehaviors>
代码:
<serviceBehaviors>
<behavior name="WcfService1.Service1Behavior">
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
指定服务行为的示例:
<service name="WcfService1.Service1" behaviorConfiguration="WcfService1.Service1Behavior">
可以找到ServiceBehaviorAttribute.IncludeExceptionDetailInFaults属性的详细说明here。
答案 1 :(得分:2)
如果您可以修改服务器上的配置文件,可以通过该服务获取异常信息。
您需要将服务行为部分添加到服务器的配置中。
<behaviors>
<serviceBehaviors>
<behavior name="serviceNameBehavior">
<serviceDebug includeExceptionDetailInFaults="True" />
</behavior>
</serviceBehaviors>
</behaviors>
然后将服务与该行为相关联。
<service name="serviceName" behaviorConfiguration="serviceNameBehavior" ...