我在WCF服务Exception thrown: 'System.Runtime.Serialization.SerializationException' in System.Runtime.Serialization.dll
中遇到了这个奇怪的异常
这是在数据库中创建的方式:
CREATE TABLE [appUser] (
[use_id] int PRIMARY KEY IDENTITY(1,1),
[firstName] nvarchar(150),
[lastName] nvarchar(150),
[gender] nvarchar(10) DEFAULT 'M',
[phoneNo] nvarchar(150) NOT NULL,
[image] nvarchar(max) DEFAULT 'abcdlkfs',
[userType] nvarchar(50) NOT NULL,
[smsConfirmationCode] nvarchar(10),
[smsVerifed] nvarchar DEFAULT '0',
[createdOn] DATETIME DEFAULT GETDATE(),
);
CREATE TABLE [parent] (
[par_id] int PRIMARY KEY IDENTITY(1,1),
[use_id] int FOREIGN KEY REFERENCES [appUser](use_id),
[CNIC] nvarchar(150),
);
CREATE TABLE [student] (
[stu_id] int PRIMARY KEY IDENTITY(1,1),
[use_id] int FOREIGN KEY REFERENCES [appUser](use_id),
[par_id] int FOREIGN KEY REFERENCES [parent](par_id),
[regNo] nvarchar(150),
[section] nvarchar(1) DEFAULT 'A',
[discipline] nvarchar(150),
[semesterNo] int DEFAULT 1,
[isFreeze] bit DEFAULT 0,
[admmisionDate] datetime DEFAULT GETDATE(),
[semesterUpdateDate] datetime,
);
CREATE TABLE [teacher] (
[tea_id] int PRIMARY KEY IDENTITY(1,1),
[use_id] int FOREIGN KEY REFERENCES [appUser](use_id),
[empNo] nvarchar(150),
);
CREATE TABLE [message] (
[msg_id] int PRIMARY KEY IDENTITY(1,1),
[from] int FOREIGN KEY REFERENCES [appUser](use_id),
[to] int FOREIGN KEY REFERENCES [appUser](use_id),
[body] nvarchar(max),
[sentOn] datetime DEFAULT GETDATE(),
[deliveredOn] datetime DEFAULT NULL,
[status] nvarchar(30) DEFAULT 'pending',
);
现在将Entity Framework 6.x添加到WCF项目后,它开始变得难看,这是发生了什么事:
如果记录为空,则返回空数组[]
很好,但是当有记录时,它只是抛出 Runtime.Serialization异常并重置与客户端的连接。 (该异常消息只能在Visual Studio的“输出”窗口中看到)
但是在我继续该过程之后,这会在Visual Studio中发生:
编辑::经过更多分析:这是错误消息:
类型为'System.Data.Entity.DynamicProxies.appUser_CB3ECC520FC14134E25C71D649FF5FCD8A0830D35A865C6798E272A4515435E1'且数据协定名称为'appUser_CB3ECC520FC14134E25C71D649FF5FCD8A0830D35A865156 {E}如果您正在使用DataContractSerializer或将任何静态未知的类型添加到已知类型的列表中,请考虑使用DataContractResolver-例如,通过使用KnownTypeAttribute属性或将它们添加到传递给序列化程序的已知类型的列表中。