问题标签 [known-types]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 具有已知类型问题的 WCF - 反序列化程序不知道映射到此合同的任何类型
就在这里呆了半天;
1)我从服务中返回这个类;
2)
3)
当我尝试将 Value 设置为我的类 2 并对其进行反序列化时,我遇到了异常。
我从 wcf 得到了这个例外;
例外; 元素“ http://schemas.datacontract.org/2004/07/Test.Services:Value ”包含映射到名称“ http://schemas.datacontract.org/2004/07/Test.Services ”的类型的数据:K结果'。反序列化器不知道映射到此名称的任何类型。考虑使用 DataContractResolver 或将与“KResult”对应的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将其添加到传递给 DataContractSerializer 的已知类型列表中。
我的界面;
说真的,我不知道我现在错过了什么,但我无法通过这个,任何帮助都会很棒,让我开心!
第一次行动
我像这样添加了来自异常 ServiceResult 类的建议;
仍然有同样的例外。
已经谢谢大家了。
c# - System.DayOfWeek 枚举 - 保存时出现 KnownType 问题的实体错误;开发力量 2012
DevForce 2012 7.2.2、EF 5、Silverlight、C#、VS2012
type 的实体属性System.DayOfWeek
,错误(下面的完整错误消息)在尝试将此属性的更改更新/保存为其他值时需要将其添加到已知类型列表中。看起来很奇怪,考虑到它是一个系统可枚举,并且它被列为可以在 DevForce 文档中使用的特定示例(http://drc.ideablade.com/devforce-2012/bin/view/Documentation/enum-types)
所以我创建了一个IKnownTypeProvider
并添加DayOfWeek
为条目:
为了好玩,我还尝试更具体一些,以防工具在某个地方变得混乱(替换DayOfWeek
为System.DayOfWeek
整个),但这产生了相同的结果。
我检查过的事情:
- 被
IKnownTypeProvider
发现了吗?成功命中断点 - 是否在 SL 和服务器端?是的,类定义文件在两个项目中。是的,它列在已知类型的集合中(由 提供
var lstKnownTypes = IdeaBlade.EntityModel.KnownTypeHelper.GetServiceKnownTypes(null);
)
继承的代码,所以也许我忽略了一些东西,但我没有看到它。
添加 IKnownTypeProvider 之前保存更改时出错:
类型 'System.DayOfWeek' 与数据合同名称 DayOfWeek: http://schemas.datacontract.org/2005/07/system ' 不是预期的。将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 或将它们添加到传递给 DataContractSerializer 的已知类型列表中
添加上面列出的错误后IKnownTypeProvider
:
格式化程序在尝试反序列化消息时出现异常:尝试反序列化参数ideablade.com/EntityModel:workState 时出错。InnerException 消息是 'Element 'ideablade.com/EntityModel:OriginalValue' 包含来自映射到名称“ http://schemas.datacontract.org/2005/07/System:DayOfWeek ”的类型的数据。反序列化器不知道映射到此名称的任何类型。考虑使用 DataContractResolver 或将与“DayOfWeek”对应的类型添加到已知类型列表中 - 例如,通过添加 KnownTypeAttribute 属性或将其添加到传递给 DataContractSerializer 的已知类型列表中。有关更多详细信息,请参阅 InnerException。
.net - 使用 Service Bus 1.0 的继承类的 DataContract 和 KnownTypes
嗨,我有以下类层次结构:
当我尝试反序列化 SuperJob 时,我得到
我已将我的课程注释如下:
不知道我做错了什么?任何想法我该如何解决这个问题?
c# - WCF - 从客户端中的服务器检索类型
当 WCF 服务器实现 ServiceKnownType 时,如何在客户端检索未知类型的合同?
造成问题的类型不会返回或用作参数。我在我的服务器上集成了 GetKnowTypes(),如下所示:WCF Problem Sending Object To Client
显然我们不能使用 T 型。所以我序列化了我的属性,我想在我的客户端反序列化,但为此我需要原始类型。
我想在客户端获得类似这样的类型:
可能吗 ?如何 ?
c# - 多态 WCF 反序列化不起作用
我创建了以下类。一个基类 IObject 和 2 个派生类 A 和 B。
我还创建了以下服务:
我想做的是获取 A 或 B 的实例,但我不知道我会得到哪个实例,所以我希望得到一个 IObject 并稍后将其转换为 A 或 B,如我放置的示例所示。
当我发送一个包含 s2 字符串的 json 字符串时会发生什么,我得到的是 IObject 实例而不是 B 实例。代码有什么问题?
我正在使用的客户端示例:
已编辑:我已通过以下链接将示例代码上传到 gitHub: https ://github.com/AlgoEitan/27588144
那里的客户端是 ac# 客户端(我已经用 c# 和 javascript 尝试过 - 网络浏览器客户端)
c# - WCF 的 KnownType 异常
我有以下服务接口
该请求有效,所以我不会发布它。Response 仅包含一个 DateTime、一个 String 和一个 TreeItem 列表。TreeItem 类的重要部分
一旦父属性设置为 null 以外的值,客户端就会收到 System.ServiceModel.Dispatcher.NetDispatcherFaultException。
说明元素“ http://schemas.datacontract.org/2004/07/Core.Base:_x003C_Parent_x003E_k__BackingField ”包含类型为“http://schemas.datacontract.org/2004/07/Core”的数据。 Base:TreeItem \" 并且反序列化器不知道任何具有该名称的类型。
我尝试使用 KnownType 属性以及 ServiceKnownType 属性。两者都没有帮助。唯一有效的是将 Parent 的类型更改为 TreeItem ,我真的不想这样做。特别是因为它可以在其他一些位置包含 ITreeItems,这很可能也会破坏服务。
知道如何解决问题吗?
c# - 避免使用 DataContractSerializer 和继承重复自己 (DRY)
我正在尝试编写一个文件头,它是一个表示某些对象层次结构的 XML 字符串。
此层次结构在某些点包含子类型,例如,类Plant
包含类型的属性Stem
,但在序列化时,Root
值可以是任何子类的实例Stem
,例如LongStem
,DryStem
或RottenStem
。此外,还有一个属性Collection<LeafBase> Leaves
,其项目可以是 的任何子类型LeafBase
,例如GreenLeaf
,SweetLeaf
等。
如果我只使用默认代码,DataContractSerializer 将给出一个运行时错误,抱怨“意外类型”,因为它需要一个类型的对象Stem
并接收一个类型DryStem
,例如。
因此,一些研究很快将我引向了 Known Types 解决方案,它要求我在目标类型的每个子类中包含一个数组(天知道还有多少层)。
嗯,这在我看来是对 DRY 和 SRP 原则的严重违反,因为如果每次我添加一个子类,我都必须在我的源代码中查找要更新的已知类型列表(这是 Shotgun Surgery 反模式,并且是该系统先前版本的最差特征之一)。
我已经看到了一种使用反射并获得已知类型列表的方法,但我猜这有点骇人听闻(我不在乎),所以我的问题是:
关于 DRY 和已知类型列表问题,对于对象树包含大量继承的类,处理 DataContractSerialization 的好方法是什么?
或者,如果有另一种类型安全的方法可以将对象序列化和反序列化为 XML 字符串,并且不受此问题的影响,那么这可能是一种选择。
c# - WCF KnownTypes reference generation
I have a WCF service that has one BaseForm that is inherited numerous time (100+), some (10+) have multi-layered inheritance too. All of the derived forms are listed as KnownTypes.
The problem I am having is the time it takes for the service to start up and to generate a client reference. Using the WCF Test Client as a test it takes about 10 minutes for it to complete. If I don't reference the KnowTypes (or just list a couple) it takes about 1.5 mins to fully complete.
Is there anyway to see what is going on, why it is taking so long? Or is there a better way than the standard?
Cheers
wcf - 在 DataContract 案例中,父类的 KnownType 可以为其子类工作吗?
我的多层项目中有一个 ExceptionDTO 类,它有一个 LogException 方法,它需要 4 个属性,其中一个是异常。我已经制作了 DataContract 解析器来解析类的类型。
我的问题是:如果我发送一些 SystemException 类型的异常,它会起作用,但如果我发送一个 SystemException 的子可能是 IndexOutOfRangeException,它就不起作用。那么我可以做些什么来建立这种关系。
我收到此错误消息 - 尝试序列化参数http://tempuri.org/:ex时出错。InnerException 消息是 'Type 'System.NullReferenceException' 与数据合同名称 'NullReferenceException: http://schemas.datacontract.org/2004/07/System ' 不是预期的。考虑使用 DataContractResolver 或将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将它们添加到传递给 DataContractSerializer 的已知类型列表中。有关更多详细信息,请参阅 InnerException。
我发送异常的代码是
c# - KnownType 不是在 reference.cs 中自动生成的
我的 wcf webservice 中定义了两种类型。DynamicFields
和ClassA
。
当我将服务添加为客户端中的服务引用时,我得到了System.ServiceModel.Dispatcher.NetDispatcherFaultException
类型异常
“System.ServiceModel.Dispatcher.NetDispatcherFaultException”发生在 mscorlib.dll 中,但未在用户代码中处理
附加信息:格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数http://tempuri.org/:GetResultsResult时出错。InnerException 消息是“第 1 行位置 3900 中的错误。元素“ http://schemas.microsoft.com/2003/10/Serialization/Arrays:Value ”包含来自映射到名称“ http://schemas ”的类型的数据.datacontract.org/2004/07/SomeNamespace:ArrayOfClassA'。反序列化器不知道映射到此名称的任何类型。如果您正在使用 DataContractSerializer,请考虑使用 DataContractResolver,或者将与“ArrayOfClassA”对应的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将其添加到传递给序列化程序的已知类型列表中。有关更多详细信息,请参阅 InnerException。
我查看了客户端自动生成的 reference.cs 文件,发现 KnownType 属性不存在
[KnownType(typeof(ClassA))]
然后我在reference.cs中手动添加属性并且它可以工作
这里的问题是每次更新服务引用,都需要去reference.cs手动添加knowntype属性。有没有办法让客户端自动生成它?