首页 文章

序列化异常WCF Silverlight

提问于
浏览
0

我有一个WCF服务,我用它来为我的项目提交错误 . 数据类的片段:

Private _exception As Exception
<DataMember()> _
 Public Property Exception As Exception
    Get
        Return _exception
    End Get
    Set(ByVal value As Exception)
        _exception = value
    End Set
End Property

我有一个Silverlight应用程序,它使用WCF服务在发生任何错误时将它们发送回家 . 这是我正在测试的错误:

Dim i As Integer = 5
 i = i / 0

问题是SL正在敲打这条消息:

System.ServiceModel.CommunicationException未被用户代码处理Message =尝试序列化参数时出错:bug . InnerException消息是'Type'System.OverflowException',数据协定名称为'OverflowException:http://schemas.datacontract.org/2004/07/System'不是预期的 . 将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表中 . 有关更多详细信息,请参阅InnerException .

是否有一些技巧可以获得通用的.NET异常(任何InnerException)来正确序列化?除了例外,我没有做任何时髦的事情 - 这只是一个简单的例外

谢谢你的帮助 .

2 回答

  • 0

    这可能是将OverflowException隐式转换为System.Exception的问题 .

    数据 Contract 序列化程序非常具体 . 这可能是好事也可能是坏事 .

    我会尝试抛出一个新的System.Exception,看看这是否正常 .

    如果是这种情况,您可能需要将异常愚蠢,创建一个新的System.Exception,其中包含原始异常消息 .

    或者,就像约翰所说,如果你创建一个包含异常信息的自定义错误类,你可能会更好 .

  • 1

    我非常怀疑你可以像Exception一样序列化特定于.NET的类型 . 我建议您创建自己的类来保存要序列化的异常部分 .

相关问题