好的。这是我公司的客户门户,它是一个 MVC 2 项目。我们有一个后端 SAP 系统,门户从中提取数据。但它不会直接命中 SAP,它会向 VB 应用程序发送一个 xml 请求,该应用程序获取数据并将其以 xml 响应的形式发回。有一个接口IRequest
,所有各种请求实现的例子都是CustomerNumberRequest
,CompanyNameRequest
等等。这些都实现了方法ToXml
顾名思义,它只是构建要发送的 xml。所有现有的请求都可以正常工作。(让我先说我继承了这个项目,而编写它的人不再和我们在一起)我现在正尝试发送请求以从 SAP 获取 Rep Groups。我基本上逐字复制了其他请求之一,进行了必要的调整以发送适当的请求。但它不断失败,出现我不明白的错误消息:
格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数 http://tempuri.org/:request时出错。InnerException 消息是“反序列化程序无法加载要反序列化的类型,因为在程序集“XXXXX.CustomerPortal.Domain,版本=1.0.0.0,文化=中性,PublicKeyToken=null”中找不到类型“XXXXX.CustomerPortal.Domain.RepGroupRequest” '。检查被序列化的类型是否与被反序列化的类型具有相同的合同,并且使用了相同的程序集。有关更多详细信息,请参阅 InnerException。
此错误发生在_communicationService.ProcessRequest(request);
(如下所示)它没有进入ProcessRequest
它只是尝试在NetDataContractSerializer
此处创建的方法:
public override XmlObjectSerializer CreateSerializer(Type type, XmlDictionaryString name, XmlDictionaryString ns, IList<Type> knownTypes)
{
return new NetDataContractSerializer();
}
然后它就死了。这些是被调用的方法:
private void PopulateRepGroups()
{
List<string> repGroups = new List<string>();
RepGroupRequest request = new RepGroupRequest();
foreach (RepGroup repGroup in _repService.GetRepGroups(request))
repGroups.Add(repGroup.RepGroupName);
ViewData["RepGroups"] = new SelectList(repGroups);
}
public List<RepGroup> GetRepGroups(RepGroupRequest request)
{
string response = _communicationService.ProcessRequest(request);
return RepGroupResponseFactory.GetRepGroupResponse(response);
}
谁能告诉我这个错误信息告诉我什么?它说找不到类型,但类型应该是 IRequest (这就是它CreateSerializer
被击中时所说的),它在整个过程中都被使用。我显然迷路了,请帮助!