首页 > 其他 > 详细

WCF问题

时间:2019-06-21 00:32:55      阅读:225      评论:0      收藏:0      [点我收藏+]

Wcf服务出现如下问题,

接收对 http://localhost:3476/BcService.svc 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致。有关详细信息,请参见服务器日志。

以上问题找了很长时间,没有发现是什么原因,按如下方式,开始记录日志

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

双击 Traces.svclog文件,会打开 trace viewer,activity列表中红色字体就是有问题的条目,双击他,然后点击红色部分,发现有如下信息

 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.Reply(MessageRpc&amp;amp; rpc)</StackTrace><ExceptionString>System.Runtime.Serialization.InvalidDataContractException: 没有类型为“BabyCenterService.Entities.ActionResult”,属性为“errmsg”的 Set 方法。

 

经分析:我的wcf服务方法统一返回 ActionResult的子类 

[DataContract]
public class ActionResult
{
[DataMember]
public string svrerr { get; set;}

[DataMember]
public string errmsg
{
get
{
try
{
return Newtonsoft.Json.JsonConvert.DeserializeObject<Exception>(svrerr).Message;
}
catch
{
return svrerr;
}
}
}
}

这个 errmsg只读属性  只要把[DataMember]标签去掉就可以了

WCF问题

原文:https://www.cnblogs.com/dlzh/p/11062235.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!