【发布时间】:2014-10-22 06:57:49
【问题描述】:
格式化程序在尝试反序列化消息时抛出异常:
尝试反序列化参数时出错 http://tempuri.org/:GetPatientInsuranceInformationResult。这 InnerException 消息是“第 1 行位置 1604 中的错误。元素 'http://schemas.datacontract.org/2004/07/SubSonic:_currentValue' 包含的数据 'http://schemas.datacontract.org/2004/07/System:DBNull' 数据合约。 反序列化器不知道映射到此的任何类型 合同。将 'DBNull' 对应的类型添加到已知列表中 类型 - 例如,通过使用 KnownTypeAttribute 属性或通过 将其添加到传递给的已知类型列表中 DataContractSerializer.'。请参阅 InnerException 了解更多详情
我的 wcf 服务函数
public PatientInsurance GetPatientInsuranceInformation(int PatientKey)
{
PatientInsurance col = new PatientInsurance();
if (PatientKey > 0)
{
Query qry = new Query(PatientInsurance.Schema.TableName).WHERE(PatientInsurance.Columns.Deleted, false).AND(PatientInsurance.Columns.PatientKey, PatientKey);
col.LoadAndCloseReader(qry.ExecuteReader());
}
return col;
}
类总是由 subsonic 生成。我在业务逻辑中编写了部分类,如下所示
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;
namespace PatientPortal.Model.Data
{
[KnownType(typeof(System.DBNull))]
[XmlInclude(typeof(DBNull))]
[KnownType(typeof(PatientInsurance))]
public partial class PatientInsurance
{
public string InsuranceTypeText
{
get
{
string insuranceTypeText = "";
//if (!string.IsNullOrEmpty(Convert.ToString(this.InsuranceType)))
//{
// int InsuranceType = Convert.ToInt32(this.InsuranceType);
// switch (InsuranceType)
// {
// case 1:
// insuranceTypeText = "Primary Insurance";
// break;
// case 2:
// insuranceTypeText = "Secondary Insurance";
// break;
// case 3:
// insuranceTypeText = "Tertiary Insurance";
// break;
// }
//}
return insuranceTypeText;
}
}
public string PrimPolicyHolderNameDisplay
{
get
{
string primPolicyHolderNameDisplay = "display:none;";
if (!string.IsNullOrEmpty(Convert.ToString(this.PrimRelationship)))
{
primPolicyHolderNameDisplay = (this.PrimRelationship == "Self") ? "display:none;" : "";
}
return primPolicyHolderNameDisplay;
}
}
public string SecPolicyHolderNameDisplay
{
get
{
string secPolicyHolderNameDisplay = "display:none;";
if (!string.IsNullOrEmpty(Convert.ToString(this.SecRelationship)))
{
secPolicyHolderNameDisplay = (this.SecRelationship == "Self") ? "display:none;" : "";
}
return secPolicyHolderNameDisplay;
}
}
public string TerPolicyHolderNameDisplay
{
get
{
string terPolicyHolderNameDisplay = "display:none;";
if (!string.IsNullOrEmpty(Convert.ToString(this.TerRelationship)))
{
terPolicyHolderNameDisplay = (this.TerRelationship == "Self") ? "display:none;" : "";
}
return terPolicyHolderNameDisplay;
}
}
}
}
.
【问题讨论】:
-
解决此问题所需的所有信息都在异常消息中...您到底需要我们提供什么?
-
您能否发布您的网络服务接收的课程以及网络服务本身?
-
你好 Nate Kerkhofs!谢谢你的回复..:) 我已经更新了我的问题