【发布时间】:2014-10-23 11:02:03
【问题描述】:
我有以下使用 EF6 的 wcf 函数:
public Order GetNextOrderNotDownloaded()
{
return _context.Orders
.Include(o => o.OrderLines)
.Where(o => !o.IsDownloaded)
.OrderBy(o => o.DateCreated)
.FirstOrDefault();
}
但是当我尝试在测试客户端中调用它时,我得到一个异常,说连接正在终止。通过关注其他帖子,我向 web.config 添加了诊断,发现异常是
内容类型 application/soap+xml; charset=utf-8 被发送到需要 text/xml 的服务;字符集=utf-8。客户和服务 绑定可能不匹配。
我尝试了各种方法,例如更改 web.config 中的绑定并删除 textEncoding="utf-8",然后其他帖子表明这可能是一个序列化问题,因此我尝试将 [Serializable] 属性添加到 Order 和OrderLines 类,但这也不起作用。
如果我删除 .Include(o => o.OrderLines),它将返回 Order 对象,但我也需要这些有序性。
有人知道如何解决这个问题吗?
Web.config 绑定:
<basicHttpBinding>
<binding name="basicHttpBinding_Service"
closeTimeout="00:11:00" openTimeout="00:11:00" receiveTimeout="00:10:00" sendTimeout="00:11:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
<message clientCredentialType="UserName" algorithmSuite="Default"/>
</security>
</binding>
</basicHttpBinding>
除此之外,如果我重新创建 Order 和 Orderline 类而没有指向 EF 的链接(即没有数据注释和虚拟属性)并使用从实体获得的值填充它们,WCF 将开始工作为什么“克隆”类可以工作,但 EF 类不能
【问题讨论】:
标签: c# entity-framework wcf utf-8