Класс SoapHeader и DataContractAttribute - PullRequest
1 голос
/ 15 декабря 2011

У меня ошибка:

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 классе

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 ]

1 голос
/ 15 декабря 2011

Вы сознательно пытались смешать две технологии?SoapHeader от унаследованной технологии ASMX, но OperationContract от WCF.

Чтобы использовать заголовки в WCF, вам необходимо использовать Контракт сообщения, который может содержать как части заголовка, так и части тела.

1 голос
/ 15 декабря 2011

Я думаю, что вам нужно отделить WebMethod от OperationContract.

Если цель состоит в том, чтобы использовать один и тот же метод для веб-службы и службы WCF, то вам необходимо переместить копию метода в отдельный файл asmx.

...