Jump to: navigation, search

Difference between revisions of "Configuration Files/web.config"


(Example 3.5)
 
(16 intermediate revisions by the same user not shown)
Line 13: Line 13:
 
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'''.
 
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'''.
  
 +
===runtimeSettings===
 +
In this file runtime specific configurations can be defined, as for example the ''[[Injection_Management#Plugin_Folders|probing path]]'' for [[Injection_Management|plugins]].
  
== 3.5 Web.config ==
+
===system.diagnostics===
Added Windows Communication Foundation Tracing in system.diagnostics, which is used in WCF instead of a debugger to understand how an app is behaving or why it faults (fault monitoring and analysis), WCF can output data for diagnostic tracing such as checking all the operation calls, code exceptions, warning and other important (significant processing) events and when the tracing feature malfunctions it can write Windows Error Events.
+
'''Activity Tracing''' or Windows Communication Foundation Tracing in system.diagnostics, which is used in WCF instead of a debugger to understand how an app is behaving or why it faults (fault monitoring and analysis), WCF can output data for diagnostic tracing such as checking all the operation calls, code exceptions, warnings, and other important (significant processing) events and when the tracing feature malfunctions it can write Windows Error Events.
  
 
*System.ServiceModel.MessageLogging : Logs all messages that flow through the system. It can be added to enhance debugging.
 
*System.ServiceModel.MessageLogging : Logs all messages that flow through the system. It can be added to enhance debugging.
 
*System.ServiceModel : Logs all stages of WCF processing, whenever configuration is read, a message is processed in transport, security processing, a message is dispatched in user code, and so on.(Message process, Reading of configuration information, Transport-level action, Security requests).
 
*System.ServiceModel : Logs all stages of WCF processing, whenever configuration is read, a message is processed in transport, security processing, a message is dispatched in user code, and so on.(Message process, Reading of configuration information, Transport-level action, Security requests).
**propagetActivity : by using this and setting its value to true, we can take trace files generated by any two endpoints and observe how the set of traces moves from one endpoint to another endpoint. (not used by default but can be turned on if such information is needed, we are using it right now in our Web configuration).
+
**propagetActivity : by using this and setting its value to true, we can take trace files generated by any two endpoints and observe how the set of traces moves from one endpoint to another endpoint. (not used by default but can be turned on if such information is needed, we are using it right now in our Web configuration).
**ActivityTracing :  added if we want to use user-defined trace source.
+
**ActivityTracing :  added if we want to use a user-defined trace source.
 
*System.Runtime.Serialization : Logs when objects are read or written. Information about object serialization or deserialization. Good to use so we can see the content of requests.
 
*System.Runtime.Serialization : Logs when objects are read or written. Information about object serialization or deserialization. Good to use so we can see the content of requests.
*System.Diagnostics.XmlWriterTraceListener : is the standard .Net Framework trace listener. Process the data WCF provides in specific output format.
+
*System.Diagnostics.XmlWriterTraceListener : is the standard .Net Framework trace listener. Process the data WCF provides in a specific output format.
 
*Trace Levels:  
 
*Trace Levels:  
 
**Critical: Logs Fail-Fast and Event Log entries, and trace correlation information. The following are some examples of when you might use the Critical level: Your AppDomain went down because of an unhandled exception. Your application fails to start. The message that caused the failure originated from the process MyApp.exe.
 
**Critical: Logs Fail-Fast and Event Log entries, and trace correlation information. The following are some examples of when you might use the Critical level: Your AppDomain went down because of an unhandled exception. Your application fails to start. The message that caused the failure originated from the process MyApp.exe.
 
**Error: Logs all exceptions. You can use the Error level in the following situations: Your code crashed because of an Invalid Cast Exception. A "failed to create endpoint" exception is causing your application to fail on startup.
 
**Error: Logs all exceptions. You can use the Error level in the following situations: Your code crashed because of an Invalid Cast Exception. A "failed to create endpoint" exception is causing your application to fail on startup.
**Warning: A condition exists that may subsequently result in an error or critical failure. You can use this level in the following situations: The application is receiving more requests than its throttling settings allows. The receiving queue is at 98 percent of its configured capacity.
+
**Warning: A condition exists that may subsequently result in an error or critical failure. You can use this level in the following situations: The application is receiving more requests than its throttling settings allow. The receiving queue is at 98 percent of its configured capacity.
 
**Information:  Messages helpful for monitoring and diagnosing system status, measuring performance, or profiling are generated. You can utilize such information for capacity planning and performance management. You can use this level in the following situations: A failure occurred after the message reached the AppDomain and was deserialized.  A failure occurred while the HTTP binding was being created.
 
**Information:  Messages helpful for monitoring and diagnosing system status, measuring performance, or profiling are generated. You can utilize such information for capacity planning and performance management. You can use this level in the following situations: A failure occurred after the message reached the AppDomain and was deserialized.  A failure occurred while the HTTP binding was being created.
 
**Verbose: Debug-level tracing for both user code and servicing. Set this level when: You are not sure which method in your code was called when the failure occurred. You have an incorrect endpoint configured and the service failed to start because the entry in the reservation store is locked.
 
**Verbose: Debug-level tracing for both user code and servicing. Set this level when: You are not sure which method in your code was called when the failure occurred. You have an incorrect endpoint configured and the service failed to start because the entry in the reservation store is locked.
**ActivityTracing: Flow events between processing activities and components.This level allows administrators and developers to correlate applications in the same application domain. Traces for activity boundaries: start/stop. Traces for transfers.
+
**ActivityTracing: Flow events between processing activities and components. This level allows administrators and developers to correlate applications in the same application domain. Traces for activity boundaries: start/stop. Traces for transfers.
  
=== How to configure ===
+
==Configuration==
Enabling can be done by simlpy setting the desired log level value of (for e.g. switchValue="Verbose" or higher)
+
See [https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/web-config?view=aspnetcore-8.0 Configuring Web.config] for further details.
Disabling can be done by simply setting the log level value of all three tracers from (e.g. switchValue="Verbose, ActivityTracing?" to switchValue="Off, ActivityTracing?").
+
By deafult all are set to "Off".
+
  
=== Example 3.5 ===
+
=== Activity Tracing configuration ===
<syntaxhighlight lang="xml">
+
Enabling can be done by simply setting the desired log level value of (e.g. ''''switchValue'="Verbose"''' or higher)
<?xml version="1.0" encoding="UTF-8"?>
+
Disabling can be done by simply setting the log level value of all three tracers from (e.g. '''switchValue="Verbose"''' to '''switchValue="Off"''').
<configuration> 
+
There is the possibility to enable only the Activity Tracing log level and this can be done by simply adding the ActivityTracing after the switchValue value(e.g. '''switchValue="Off, ActivityTracing"'''), or both log levels can be enabled at the same time(e.g. '''switchValue="Verbose, ActivityTracing"''')
<configSections>
+
By default, all switchValues are set to "Off".
<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" />
+
===Upload of large files===
</configSections>   
+
For security reasons we allow the upload of files with a size of 65536 KB (64MB), to increase this size the '''maxRequestLength attribute''' in the '''system.web tag''' must be adapted.
<loggingConfiguration configSource="Logging.config" />
+
 
<exceptionHandling>
+
{{Hint|The '''maxRequestLength''' is handled in KB.}}
<exceptionPolicies>
+
 
<add name="System.Exception">   
+
{{Attention|The [[Configuration_Files/Bindings.config#Upload_of_large_files]] must also be adapted otherwise, the upload will fail.}}
<exceptionTypes>
+
 
<add name="All Exceptions" type="System.Exception, mscorlib, Version=4.0.0.0, Culture=neutral,                                            PublicKeyToken=b77a5c561934e089"
+
{{Attention|If you are using Windows Internet Information Services (IIS), the maximum upload file size must be reconfigured in IIS otherwise the upload will fail. [[HowTo:Configure_Microsoft_IIS_for_UBIK#Configure_Upload_of_large_files]]}}
postHandlingAction="None">
+
 
<exceptionHandlers>
+
==== Example Upload of files with 300MB Size ====
<add name="System.Exception"
+
<source lang="XML">
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>
+
<appSettings  configSource="AppSettings.config" />
+
<runtime>
+
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+
<probing privatePath="bin\lib;injection"/>
+
</assemblyBinding>
+
</runtime>
+
 
<system.web>
 
<system.web>
<customErrors mode="Off"/>
+
  <customErrors mode="Off"/>
<httpRuntime maxRequestLength="65536" />
+
  <httpRuntime maxRequestLength="302700" targetFramework="4.6"/>
<compilation debug="true" defaultLanguage="c#" targetFramework="4.0" />
+
  <compilation debug="false" defaultLanguage="c#" targetFramework="4.6"/>
 
</system.web>
 
</system.web>
<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" httpGetEnabled="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" />
 
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
 
</behavior>
 
</serviceBehaviors>
 
<endpointBehaviors>
 
<behavior name="httpBehavior">
 
<webHttp />
 
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
 
</behavior>
 
</endpointBehaviors>
 
</behaviors>
 
<bindings configSource="Bindings.config" />
 
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" minFreeMemoryPercentageToActivateService="0" />
 
<services configSource="Services.config" />
 
<client configSource="Client.config" />
 
</system.serviceModel>
 
<system.webServer>
 
<modules runAllManagedModulesForAllRequests="true" />
 
<directoryBrowse enabled="true" />
 
<validation validateIntegratedModeConfiguration="false" />
 
<security>           
 
<requestFiltering>
 
<requestLimits maxAllowedContentLength="524288000"/>
 
</requestFiltering>
 
</security>
 
</system.webServer>
 
<runtime>
 
<assemblyBinding>
 
<probing privatePath="bin\lib;injection"/>
 
<dependentAssembly>
 
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
 
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="5.0.0.0" />
 
</dependentAssembly>
 
</assemblyBinding>
 
</runtime>
 
<system.diagnostics>
 
<sources>
 
<source name="System.ServiceModel.MessageLogging" switchValue="Off, ActivityTracing">
 
<listeners>
 
<add name="ServiceModelTraceListener" />
 
</listeners>
 
 
</source>
 
</source>
<source name="System.ServiceModel" switchValue="Off,ActivityTracing">
 
<listeners>
 
<add name="ServiceModelTraceListener" />
 
</listeners>
 
</source>
 
<source name="System.Runtime.Serialization" switchValue="Off,ActivityTracing">
 
<listeners>
 
<add name="ServiceModelTraceListener" />
 
</listeners>
 
</source>
 
</sources>
 
<sharedListeners>
 
<add initializeData="App_tracelog.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral,
 
PublicKeyToken=b77a5c561934e089" name="ServiceModelTraceListener" traceOutputOptions="Timestamp" />
 
</sharedListeners>
 
<trace autoflush="true" />
 
</system.diagnostics>
 
</configuration>
 
</syntaxhighlight>
 
  
[[Category:Installing|Configuration Files/web.config]]
+
 
[[Category:Web service|Configuration Files/web.config]]
+
 
  
 
== See also ==
 
== See also ==

Latest revision as of 09:58, 25 April 2024

This is the main configuration file of the web service. The web service is configured using this main configuration file and the specific files.

Sections

These sections will be found only in the web service configuration file.

appSettings

See Configuration Files/AppSettings.config.

system.web

This does not have to be edited in general.

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.

runtimeSettings

In this file runtime specific configurations can be defined, as for example the probing path for plugins.

system.diagnostics

Activity Tracing or Windows Communication Foundation Tracing in system.diagnostics, which is used in WCF instead of a debugger to understand how an app is behaving or why it faults (fault monitoring and analysis), WCF can output data for diagnostic tracing such as checking all the operation calls, code exceptions, warnings, and other important (significant processing) events and when the tracing feature malfunctions it can write Windows Error Events.

  • System.ServiceModel.MessageLogging : Logs all messages that flow through the system. It can be added to enhance debugging.
  • System.ServiceModel : Logs all stages of WCF processing, whenever configuration is read, a message is processed in transport, security processing, a message is dispatched in user code, and so on.(Message process, Reading of configuration information, Transport-level action, Security requests).
    • propagetActivity : by using this and setting its value to true, we can take trace files generated by any two endpoints and observe how the set of traces moves from one endpoint to another endpoint. (not used by default but can be turned on if such information is needed, we are using it right now in our Web configuration).
    • ActivityTracing : added if we want to use a user-defined trace source.
  • System.Runtime.Serialization : Logs when objects are read or written. Information about object serialization or deserialization. Good to use so we can see the content of requests.
  • System.Diagnostics.XmlWriterTraceListener : is the standard .Net Framework trace listener. Process the data WCF provides in a specific output format.
  • Trace Levels:
    • Critical: Logs Fail-Fast and Event Log entries, and trace correlation information. The following are some examples of when you might use the Critical level: Your AppDomain went down because of an unhandled exception. Your application fails to start. The message that caused the failure originated from the process MyApp.exe.
    • Error: Logs all exceptions. You can use the Error level in the following situations: Your code crashed because of an Invalid Cast Exception. A "failed to create endpoint" exception is causing your application to fail on startup.
    • Warning: A condition exists that may subsequently result in an error or critical failure. You can use this level in the following situations: The application is receiving more requests than its throttling settings allow. The receiving queue is at 98 percent of its configured capacity.
    • Information: Messages helpful for monitoring and diagnosing system status, measuring performance, or profiling are generated. You can utilize such information for capacity planning and performance management. You can use this level in the following situations: A failure occurred after the message reached the AppDomain and was deserialized. A failure occurred while the HTTP binding was being created.
    • Verbose: Debug-level tracing for both user code and servicing. Set this level when: You are not sure which method in your code was called when the failure occurred. You have an incorrect endpoint configured and the service failed to start because the entry in the reservation store is locked.
    • ActivityTracing: Flow events between processing activities and components. This level allows administrators and developers to correlate applications in the same application domain. Traces for activity boundaries: start/stop. Traces for transfers.

Configuration

See Configuring Web.config for further details.

Activity Tracing configuration

Enabling can be done by simply setting the desired log level value of (e.g. 'switchValue'="Verbose" or higher) Disabling can be done by simply setting the log level value of all three tracers from (e.g. switchValue="Verbose" to switchValue="Off"). There is the possibility to enable only the Activity Tracing log level and this can be done by simply adding the ActivityTracing after the switchValue value(e.g. switchValue="Off, ActivityTracing"), or both log levels can be enabled at the same time(e.g. switchValue="Verbose, ActivityTracing") By default, all switchValues are set to "Off".

Upload of large files

For security reasons we allow the upload of files with a size of 65536 KB (64MB), to increase this size the maxRequestLength attribute in the system.web tag must be adapted.

IC Hint square.pngThe maxRequestLength is handled in KB.
IC Attention.pngThe Configuration Files/Bindings.config must also be adapted otherwise, the upload will fail.
IC Attention.pngIf you are using Windows Internet Information Services (IIS), the maximum upload file size must be reconfigured in IIS otherwise the upload will fail. Configure Microsoft IIS for UBIK

Example Upload of files with 300MB Size

<system.web>
  <customErrors mode="Off"/>
  <httpRuntime maxRequestLength="302700" targetFramework="4.6"/>
  <compilation debug="false" defaultLanguage="c#" targetFramework="4.6"/>
</system.web>



See also