C#Telerik负载组件错误(StartIndex不能小于零。)
我有一些存储在数据库中的Telerik报告。为了将它们转换为报告,我使用了这样的代码:
private Telerik.Reporting.Report GetReportFromXml(string xmlString)
{
using (StringReader xmlReader = new StringReader(xmlString))
{
Telerik.Reporting.XmlSerialization.ReportXmlSerializer xmlSerializer = new ReportXmlSerializer();
object res = xmlSerializer.Deserialize(xmlReader);
return res as Telerik.Reporting.Report;
}
}
我还有两个数据库,具有绝对相同的XMLString
数据。
问题:
在第一个数据库的情况下都可以正常工作。
第二,我在xmlSerializer.deserialize(xmlreader)
上获得错误:
CurrentDomain_UnhandledException
System.IO.FileLoadException: Could not load file or assembly 'Telerik.Reporting.Design, Version=10.1.16.504, Culture=neutral, PublicKeyToken=a9d7983dfcc261be' or one of its dependencies. An argument was out of its legal range. (Exception from HRESULT: 0x80131502)
File name: 'Telerik.Reporting.Design, Version=10.1.16.504, Culture=neutral, PublicKeyToken=a9d7983dfcc261be' ---> System.ArgumentOutOfRangeException: StartIndex cannot be less than zero.
Parameter name: startIndex
at System.String.Substring(Int32 startIndex, Int32 length)
at ?A0x6aa5279c.domain_AssemblyResolve(Object __unnamed000, ResolveEventArgs args)
at System.AppDomain.OnAssemblyResolveEvent(RuntimeAssembly assembly, String assemblyFullName)
at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type)
at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName)
at System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark)
at System.Type.GetType(String typeName)
at System.ComponentModel.PropertyDescriptor.GetTypeFromName(String typeName)
at System.ComponentModel.PropertyDescriptor.get_Converter()
at Telerik.Reporting.Xml.ObjectXmlReaderWriterBase.GetTypeConverter(PropertyDescriptor prop)
at Telerik.Reporting.Xml.ObjectXmlReader.ReadValue(Object obj, PropertyDescriptor prop)
at Telerik.Reporting.Xml.ObjectXmlReader.ReadAttributes(Object obj, PropertyDescriptorCollection props)
at Telerik.Reporting.Xml.ObjectXmlReader.ReadProperties(Object obj)
at Telerik.Reporting.Xml.ObjectXmlReader.ReadObject(Type type)
at Telerik.Reporting.Xml.ObjectXmlReader.ReadXmlElement(String name)
at Telerik.Reporting.Xml.ObjectXmlReader.ReadCollection(Object collection)
at Telerik.Reporting.Xml.ObjectXmlReader.ReadProperties(Object obj)
at Telerik.Reporting.Xml.ObjectXmlReader.ReadObject(Type type)
at Telerik.Reporting.Xml.ObjectXmlReader.ReadXmlElement(String name)
at Telerik.Reporting.Xml.ObjectXmlReader.Deserialize(IResourceHandler handler)
at Telerik.Reporting.Xml.XmlSerializer.Deserialize(TextReader reader, IResourceHandler resourceHandler)
at Telerik.Reporting.XmlSerialization.ReportXmlSerializer.Deserialize(TextReader reader)
我想提一下,我使用相同的源代码,我完全确定参数xmlstring
xmlstring 在两种情况。 我只是更改连接和错误。
我认为这是一些数据库设置,该设置将加载强制组件。但是项目很庞大,并且对如何解决此问题以及我应该关注的内容一无所知。
I have some Telerik reports that are stored in database. To convert them into Reports I used such piece of code:
private Telerik.Reporting.Report GetReportFromXml(string xmlString)
{
using (StringReader xmlReader = new StringReader(xmlString))
{
Telerik.Reporting.XmlSerialization.ReportXmlSerializer xmlSerializer = new ReportXmlSerializer();
object res = xmlSerializer.Deserialize(xmlReader);
return res as Telerik.Reporting.Report;
}
}
Also I have two databases with absolutely same xmlString
data.
The Problem:
With first database all works fine.
With second I get error on xmlSerializer.Deserialize(xmlReader)
:
CurrentDomain_UnhandledException
System.IO.FileLoadException: Could not load file or assembly 'Telerik.Reporting.Design, Version=10.1.16.504, Culture=neutral, PublicKeyToken=a9d7983dfcc261be' or one of its dependencies. An argument was out of its legal range. (Exception from HRESULT: 0x80131502)
File name: 'Telerik.Reporting.Design, Version=10.1.16.504, Culture=neutral, PublicKeyToken=a9d7983dfcc261be' ---> System.ArgumentOutOfRangeException: StartIndex cannot be less than zero.
Parameter name: startIndex
at System.String.Substring(Int32 startIndex, Int32 length)
at ?A0x6aa5279c.domain_AssemblyResolve(Object __unnamed000, ResolveEventArgs args)
at System.AppDomain.OnAssemblyResolveEvent(RuntimeAssembly assembly, String assemblyFullName)
at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type)
at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName)
at System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark)
at System.Type.GetType(String typeName)
at System.ComponentModel.PropertyDescriptor.GetTypeFromName(String typeName)
at System.ComponentModel.PropertyDescriptor.get_Converter()
at Telerik.Reporting.Xml.ObjectXmlReaderWriterBase.GetTypeConverter(PropertyDescriptor prop)
at Telerik.Reporting.Xml.ObjectXmlReader.ReadValue(Object obj, PropertyDescriptor prop)
at Telerik.Reporting.Xml.ObjectXmlReader.ReadAttributes(Object obj, PropertyDescriptorCollection props)
at Telerik.Reporting.Xml.ObjectXmlReader.ReadProperties(Object obj)
at Telerik.Reporting.Xml.ObjectXmlReader.ReadObject(Type type)
at Telerik.Reporting.Xml.ObjectXmlReader.ReadXmlElement(String name)
at Telerik.Reporting.Xml.ObjectXmlReader.ReadCollection(Object collection)
at Telerik.Reporting.Xml.ObjectXmlReader.ReadProperties(Object obj)
at Telerik.Reporting.Xml.ObjectXmlReader.ReadObject(Type type)
at Telerik.Reporting.Xml.ObjectXmlReader.ReadXmlElement(String name)
at Telerik.Reporting.Xml.ObjectXmlReader.Deserialize(IResourceHandler handler)
at Telerik.Reporting.Xml.XmlSerializer.Deserialize(TextReader reader, IResourceHandler resourceHandler)
at Telerik.Reporting.XmlSerialization.ReportXmlSerializer.Deserialize(TextReader reader)
I want to mention that I use the same source code and I'm totally sure that parameter xmlString
is equal in both situation.
I just changing connection and error appears.
I presume it's some database setting that force assembly to load. But project is huge and don't have a clue as to how to fix this and what I should pay attention to.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Telerik报告组件是 strong-name'您正在报告的错误看起来像是当前组件之间的版本不兼容。为了排除此内容,请更新所有参考文献(如果使用Nuget install/卸载),并确保所有Telerik报告依赖项都具有相同的版本。我认为两个数据连接之间的不同行为是副作用,而不是问题背后的原始原因。
Telerik Reporting assemblies are strong-name signed and the error that you are reporting looks like a version incompatibility between current assemblies. In order to rule this out, update all your references (if using NuGet install/uninstall) and ensure that all of the Telerik Reporting dependencies have the same version. I assume that the different behavior between the two data connections is a side effect, rather than the original reason behind the problem.