WCF问题
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; 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]标签去掉就可以了