Last modified on 12 May 2015, at 07:20

Configuration File Example

Revision as of 07:20, 12 May 2015 by KNO (Talk | contribs) (bindings)

All the configuration files (UBIK.Studio.exe.config, UBIK.EnterpriseService.exe.config, web.config) have to comply with syntax and other guidelines as given in Configuring Apps by using Configuration Files.

For the configuration file web.config of the Web Service see the Configuring Services for further information.

[edit]

General

These sections will be found in all of the configuration files.

configSection

In the configSection tag service specific configurations can be defined. These settings include logging and exception handling in the UBIK® web service. This tag should not be changed in general.

  <configSections>
    <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
    <section name="exceptionHandling" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration.ExceptionHandlingSettings, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
  </configSections>

loggingConfiguration

See Configuration Files/Logging.config.

exceptionHandling

In this tag the settings for exception handling can be specified.

  <exceptionHandling>
    <exceptionPolicies>
      <add name="System.Exception">
        <exceptionTypes>
          <add name="All Exceptions" type="System.Exception, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
           postHandlingAction="None">
            <exceptionHandlers>
              <add name="System.Exception" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.LoggingExceptionHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
               logCategory="EXCEPTION" eventId="100" severity="Error" title="System.Exception"
               formatterType="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.TextExceptionFormatter, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
               priority="0" />
            </exceptionHandlers>
          </add>
        </exceptionTypes>
      </add>
    </exceptionPolicies>
  </exceptionHandling>

runtime

Runtime specific configurations can be defined, as for example the probing path for plugins.

        <runtime>
                <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
                        <probing privatePath="lib;Injection"/>
                        <dependentAssembly>
                                <assemblyIdentity name="Xceed.Wpf.Themes.Metro" publicKeyToken="ba83ff368b7563c6" culture="neutral"/>
                                <bindingRedirect oldVersion="0.0.0.0-2.4.14475.10340" newVersion="2.4.14475.10340"/>
                        </dependentAssembly>
                        <dependentAssembly>
                                <assemblyIdentity name="Xceed.Wpf.Themes" publicKeyToken="ba83ff368b7563c6" culture="neutral"/>
                                <bindingRedirect oldVersion="0.0.0.0-2.4.14475.10340" newVersion="2.4.14475.10340"/>
                        </dependentAssembly>
                        <dependentAssembly>
                                <assemblyIdentity name="Xceed.Wpf.Toolkit" publicKeyToken="ba83ff368b7563c6" culture="neutral"/>
                                <bindingRedirect oldVersion="0.0.0.0-2.4.14475.10340" newVersion="2.4.14475.10340"/>
                        </dependentAssembly>
                        <dependentAssembly>
                                <assemblyIdentity name="Xceed.Wpf.ListBox" publicKeyToken="ba83ff368b7563c6" culture="neutral"/>
                                <bindingRedirect oldVersion="0.0.0.0-2.4.14475.10340" newVersion="2.4.14475.10340"/>
                        </dependentAssembly>
                        <dependentAssembly>
                                <assemblyIdentity name="Xceed.Wpf.Themes.Office2007" publicKeyToken="ba83ff368b7563c6" culture="neutral"/>
                                <bindingRedirect oldVersion="0.0.0.0-2.4.14475.10340" newVersion="2.4.14475.10340"/>
                        </dependentAssembly>
                </assemblyBinding>
        </runtime>

system.serviceModel

In this section the web services are configured:

  • Behaviours for services and endpoints
  • Bindings (provides different configurations for data services and endpoints specified by the name which then is used in the service/client configuration). See Details for further information and Configuring Timeout Values on a Binding for information about Timeout configuration.
  • Services (used for the data service and the session management service)
  • Clients (the client definition is used by the data service to connect to the session management service defined in the appSettings)
The client's endpoint addresses are ignored as they are replaced by the settings provided in appSettings at service runtime!

behaviors

<system.serviceModel>
  <behaviors>
    <serviceBehaviors>
      <behavior name="httpBehavior">
        <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
        <serviceMetadata httpsGetEnabled="true"/>
        <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
        <serviceDebug includeExceptionDetailInFaults="true"/>
      </behavior>
    </serviceBehaviors>
    <endpointBehaviors>
      <behavior name="httpBehavior">
        <webHttp/>
      </behavior>
    </endpointBehaviors>
  </behaviors>
  ...
</system.serviceModel>

bindings

See Configuration Files/Bindings.config.

services

<system.serviceModel>
  ...
  <serviceHostingEnvironment multipleSiteBindingsEnabled="true" minFreeMemoryPercentageToActivateService="0"/>
  <services>
    <service name="UBIK.Service.UBIKContent" behaviorConfiguration="httpBehavior">
      <endpoint address="" behaviorConfiguration="httpBehavior" binding="webHttpBinding" bindingConfiguration="WebHttpBinding_UBIKContent" contract="UBIK.Service.IUBIKContent"/>
      <endpoint address="/SOAP" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_UBIKContent" contract="UBIK.Service.IUBIKContent"/>
    </service>
    <service name="UBIK.Service.USAM" behaviorConfiguration="httpBehavior">
      <endpoint address="" binding="webHttpBinding" behaviorConfiguration="httpBehavior" bindingConfiguration="WebHttpBinding_UBIKContent" contract="UBIK.Service.IUSAM"/>
      <endpoint address="/SOAP" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IUSAM" contract="UBIK.Service.IUSAM"/>
    </service>
  </services>
  ...
</system.serviceModel>

client

<system.serviceModel>
  ...
  <client>
    <endpoint address="a" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IUSAM" contract="USAMService.IUSAM" name="BasicHttpBinding_IUSAM"/>
    <endpoint address="a" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IUSAM" contract="USAMService.IUSAM" name="WSHttpBinding_IUSAM"/>
    <endpoint address="https://137.135.200.180[:PORT]/UBIK/DEMO.240.PUSH/UBIKPush.svc/SOAP" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IUBIKPush" contract="PushService.IUBIKPush" name="WSHttpBinding_IUBIKPush" />
  </client>
</system.serviceModel>

web.config

These sections are necessary in the configuration files of the Web Service.

appSettings

In this section the settings of the UBIK® service can be specified. The settings are described in chapter Web Service Configuration.

Example 1:

  <appSettings>
    <add key="UBIK.DataBase.ConnectionString" value="Data Source=ubikdbserver.mydomain;Initial Catalog=UBIK.MYDATABASE;User ID=myuser;Password=mypassword" />
    <add key="UBIK.Service.MaxIdleMinutes" value="5" />
    <add key="UBIK.Service.ValityPeriode" value="0" />
    <add key="UBIK.Service.TokenValityPeriode" value="300" />
    <add key="UBIK.Service.LogLevel" value="10" />
    <add key="UBIK.Service.UserRestrictive" value="1" />
    <add key="UBIK.Service.DeviceRestrictive" value="1" />
    <add key="UBIK.Service.TokenRestrictive" value="1" />
    <add key="UBIK.Service.LanguageID" value="0" />
    <add key="UBIK.Service.SessionManagementType" value="0" />
    <add key="UBIK.Service.SessionManagementUrl" value="" />
  </appSettings>

Example 2: (configured for an Microsoft Azure cloud database and a LAS service)

  <appSettings>
    <add key="UBIK.DataBase.ConnectionString" value="Data Source=tcp:xxxxxxxx.database.windows.net,1433;Initial Catalog=UBIK.MYDATABASE;User ID=myclouduser@xxxxxxxx;Password=mypassword" />
    <add key="UBIK.Service.MaxIdleMinutes" value="5" />
    <add key="UBIK.Service.ValityPeriode" value="0" />
    <add key="UBIK.Service.TokenValityPeriode" value="300" />
    <add key="UBIK.Service.LogLevel" value="10" />
    <add key="UBIK.Service.UserRestrictive" value="1" />
    <add key="UBIK.Service.DeviceRestrictive" value="1" />
    <add key="UBIK.Service.TokenRestrictive" value="1" />
    <add key="UBIK.Service.LanguageID" value="0" />
    <add key="UBIK.Service.SessionManagementType" value="1" />
    <add key="UBIK.Service.SessionManagementUrl" value="https://myusamserver.mydomain:myport/UBIK/USAM/USAM.svc/SOAP" />
  </appSettings>
IC Hint square.pngThe port number myport must be specified only if other than 443.

system.web

This does not have to be edited in general.

  <system.web>
    <customErrors mode="Off"/>
    <httpRuntime maxRequestLength="65536" />
    <compilation debug="true" defaultLanguage="c#" targetFramework="4.0" />
  </system.web>

system.webServer

This does not have to edited in general, except the setting for the maximum allowed size of received content. This can be changed by editing the value maxAllowedContentLength within the section requestFiltering/requestLimits.

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <directoryBrowse enabled="true" />
    <validation validateIntegratedModeConfiguration="false" />
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="524288000"/>
      </requestFiltering>
    </security>
  </system.webServer>

See also