c# - 将对象从 Web 服务返回到客户端时收到错误消息
问题描述
我使用 Visual Studio 2010 Entity Framework 4 编写了一个桌面应用程序,其中包含几个项目:
ECartableDataService
(这是一个基于 Web 的数据服务,上传到 IIS 服务器)ECartableEntities
ECartableModel
ECartableRepository
ECartableUI
一切正常,直到我决定将其升级到 Visual Studio 2017 和 Entity Framework 6。
说到这部分:
using (ECartableServiceClient client = new ECartableServiceClient ())
{
User t = client.JustForTest();
}
我收到以下错误:
接收对 http://Server2012:11545/ECartableDataService.svc 的 HTTP 响应时出错。这可能是由于服务端点绑定未使用 HTTP 协议。这也可能是由于服务器中止了 HTTP 请求上下文(可能是由于服务关闭)。有关更多详细信息,请参阅服务器日志。
JustForTest
函数只是一个用于测试和找出问题所在的函数,它驻留在 Web 数据服务中:
public User JustForTest()
{
User u = new User(); // User is an entity created by Entity Framework
// bool flag = false;
using (UnitOfWork unitOfWork = new UnitOfWork())
{
u = unitOfWork.UserRepository.GetTest(1135);
}
return u;
}
当函数返回一个User
对象时会出现问题,例如,如果我设置它返回一个布尔值(如标志),它工作正常,但它返回一个对象User
或其他实体,它会引发错误。
我跟踪了网络服务,并从中得到了消息:
我做了以下
context.Configuration.ProxyCreationEnabled = false;
但它没有成功。
这是关于序列化的事情,这个应用程序在 Visual Studio 2010 上运行良好,但我如何将对象从 Web 服务返回到 Visual Studio 2017 中的 UI?
解决方案
我为实体的所有导航属性(此处的用户)添加了 KnownType 属性,它已修复,如下所示:
[KnownType(typeof(Task))]
[KnownType(typeof(Folder))]
public partial class User : StateObject
{
public User()
{
this.TasksSent = new HashSet<Task>();
this.Folder= new HashSet<Folder>();
}
public short Id { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public byte Privilege { get; set; }
public bool IsActive { get; set; }
public string ProjectExclude { get; set; }
public virtual ICollection<Folder> Folder{ get; set; }
public virtual ICollection<Task> TasksSent { get; set; }
}
推荐阅读
- css - 使用 img 使 p 占据 div 的全宽
- android - AndroidPlot - 有没有办法点击和放大图表
- kubernetes - 通过 Lens IDE 访问远程 k3s 集群
- syntax - 正常运行时出现无效语法错误,同时进行调试运行
- aws-lambda - 以无服务器框架服务模式部署的意外双 Lambda
- css - 为什么我的 CSS 变量在 Django 中无法识别?
- powershell - 动态 (FetchXML) - 错误:不支持聚合
- python - 修改 matplotlib 图表以显示较低的分数(y 轴)对于不同的值更好
- css - WordPress 中名称和价格对齐的 CSS 帮助
- android - 如何与 Google Play 商店联系以挑战应用拒绝