SoapHeader类和DataContractAttribute

时间:2011-12-15 16:17:28

标签: vb.net wcf soapheader

我有一个错误:

Type 'MyAppApp.Web.MyAppWebService.NotifierAuthHeader' cannot inherit from a type that is not marked with DataContractAttribute or SerializableAttribute. Consider marking the base type 'System.Web.Services.Protocols.SoapHeader' with DataContractAttribute or SerializableAttribute, or removing them from the derived type.

执行此wcf方法时:

<OperationContract()> <WebMethod(Description:="Gets details about selected PDF document")> _
    Public Function GetPdfDetails(ByVal pdfName As String) As String

我无法更改SoapHeader,因为它是框架类

Public MustInherit Class SoapHeader
          Inherits System.Object
     Member of System.Web.Services.Protocols

我在NotifierAuthHeader class

中使用此类
Imports System.Web.Services.Protocols
Imports System.Runtime.Serialization 

Public Class NotifierAuthHeader
    Inherits SoapHeader

    Public HandlerId As Integer
    Public Guid As Byte()
End Class

我有点困惑。我怎么能有这个工作?

2 个答案:

答案 0 :(得分:1)

我认为您需要将WebMethod与OperationContract分开。

如果目标是对Web服务和WCF服务使用相同的方法,则需要将方法的副本移动到单独的asmx中。

答案 1 :(得分:1)

您是否故意尝试混合两种技术? SoapHeader来自传统的ASMX技术,但OperationContract来自WCF。

要在WCF中使用标头,您需要使用消息合同,该合同可以包含标题部分以及正文部分。