Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

IdCard er en abstract klasse, som implementeres af SystemIdCard og UserIdCard, som hhv. repræsenter enten et system eller en bruger.

MessageHeaders

Disse MessageHeaders bruges til at indsætte relevant data i headeren for et request, som er lavet med en klient genereret ud fra en WCF service reference.

For at stemme overens med service references, implementerer MessageHeader klasserne 'System.ServiceModel.Channels.Message'

fra https://www.nuget.org/packages/System.ServiceModel.Primitives/, som er det service references arbejder med. 


Rent lavpraktisk betyder det at MessageHeaders kan gives til OutgoingMessageHeaders.Add,

og så bliver den data MessageHeaderen har, sat ind i headeren på et det request man laver.


Nedenstående eksempler demonstrere dette, hvor dk.nsi.seal.dgwstypes.Header

og NSTWsProvider.NtsWSProviderClient er genereret ud fra en WSDL, ved at bruge nævnte WCF service references.Image Removed

IdCardMessageHeader 

Benyttes til at tilføje et ID kort til en WCF MessageHeader gennem headeren af et WCF request, ved at sætte den på OutgoingMessageHeaders.

Eksempel:

...

Den Gode Webservice (DGWS) specificerer en ekstra headertype baseret på XML ( dk.nsi.seal.dgwstypes.Header), som kan indsættes ud fra et objekt, der serialiseres til XML med XmlMessageHeader.XmlMessageHeader implementer System.ServiceModel.Channels.Message fra https://www.nuget.org/packages/System.ServiceModel.Primitives/, så den kan bruges med WCF Service references.

XmlMessageHeader indeholder en static constructor-metode, HeaderFromXml, til at lave instanser af den.

Eksempel på HeaderFromXml:

Code Block
languagec#
using static dk.nsi.seal.MessageHeaders.XmlMessageHeader;

...

reply.Headers.Add(HeaderFromXml(header));

I nedestående Mere komplet eksempel er hvor dk.nsi.seal.dgwstypes.Header og NSTWsProvider.NtsWSProviderClient genereret af en WCF service referenceserialiseres til XML og indsættes:

Code Block
languagec#
var client = new NSTWsProvider.NtsWSProviderClient(binding, new EndpointAddress("https://test1-cnsp.ekstern-test.nspop.dk:8443/nts/service"));

var dgwsHeader = new dk.nsi.seal.dgwstypes.Header()
{
    SecurityLevel = 4,
    SecurityLevelSpecified = true,
    Linking = new Linking { MessageID = Guid.NewGuid().ToString("D") }
};

using (new OperationContextScope(client.InnerChannel))
{
    OperationContext.Current.OutgoingMessageHeaders.Add(HeaderFromXml(dgwsHeader)); // Indsæt header som XML ud fra serialiseret header
    return client.invokeAsync("test");
}

...