Avatar billede angelenglen Nybegynder
01. oktober 2014 - 11:34 Der er 1 løsning

.net app.config med reference til konstant?

Jeg har en app.config tilknyttet et projekt.

Denne config indeholder et endpoint, der indeholder en addresse.

Jeg kunne godt tænke mig at denne adresse kom et andet sted fra.
Værdien altså.
Eksempelvis fra en konstant defineret i projektet.

Kan det overhovedet lade sig gøre?

Her er et eksempel på app.config filen med et endpoint.
Det er "address=" attributtens værdi jeg ønsker ændret.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <bindings>
      <customBinding>
        <binding name="ForsendelsesServiceV2SoapBinding">
          <mtomMessageEncoding maxReadPoolSize="211" maxWritePoolSize="2132" messageVersion="Soap12" writeEncoding="utf-8"/>
          <httpsTransport manualAddressing="false" maxBufferPoolSize="524288"
                          maxReceivedMessageSize="65536" allowCookies="false" authenticationScheme="Basic"
                          bypassProxyOnLocal="false" decompressionEnabled="true" hostNameComparisonMode="StrongWildcard"
                          keepAliveEnabled="true" maxBufferSize="65536" proxyAuthenticationScheme="Anonymous"
                          realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false"
                          useDefaultWebProxy="true" requireClientCertificate="false" />
        </binding>
      </customBinding>
    </bindings>
    <client>
      <endpoint address="https://www.endpoint.com/tjenester/forsendelseservice/ForsendelsesServiceV2"
        binding="customBinding" bindingConfiguration="ForsendelsesServiceV2SoapBinding"
        contract="wsWebService.ForsendelsesServiceV2" name="ForsendelsesServiceV2" />
    </client>
  </system.serviceModel>
</configuration>
Avatar billede angelenglen Nybegynder
23. oktober 2014 - 15:28 #1
Man kan ikke gøre det som jeg oprindeligt havde tænkt.

Men kan kan oprette sig endpoint programatisk, og deri benytte en værdi andetsteds fra.

Og det endte med at være min løsning.

Her er et eksempel på en VB.Net metode, der returnerer en klient der har samme properties som den ville have haft, hvis den var lavet ud fra app.config'en i spørgsmålet.

Private Shared Function getForsendelsesServiceV2Client() As ForsendelsesServiceV2Client
        Dim objMessageEncoding As New ServiceModel.Channels.MtomMessageEncodingBindingElement()
        With objMessageEncoding
            .MaxReadPoolSize = 211
            .MaxWritePoolSize = 2132
            .MessageVersion = ServiceModel.Channels.MessageVersion.Soap12
            .WriteEncoding = System.Text.Encoding.UTF8
        End With

        Dim objTrandportBinding As New ServiceModel.Channels.HttpsTransportBindingElement()
        With objTrandportBinding
            .AuthenticationScheme = Net.AuthenticationSchemes.Basic
            .DecompressionEnabled = True
            .TransferMode = ServiceModel.TransferMode.Buffered
        End With

        Dim objEndpoint As New ServiceModel.EndpointAddress(_ServiceEndpointAddress)
        Dim objBinding As New ServiceModel.Channels.CustomBinding(objMessageEncoding, objTrandportBinding)

        Dim forsendelsesService As New ForsendelsesServiceV2Client(objBinding, objEndpoint)

        Dim oCredentials As System.Net.NetworkCredential = getCredentialsFromConfig()

        If (oCredentials.UserName <> String.Empty And oCredentials.Password <> String.Empty) Then
            forsendelsesService.ClientCredentials.UserName.UserName = oCredentials.UserName
            forsendelsesService.ClientCredentials.UserName.Password = oCredentials.Password
            Return forsendelsesService
        Else
            Throw New Exception("API username og/eller password konfiguration ikke fundet.")
            Return Nothing
        End If
    End Function
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester