"Date"
+ "x-ms-date"
+ "Content-Type"
+ "Content-Length"
+ "ETag"
+ "x-ms-request-id"
+ "User-Agent"
+ "Accept"
+ "Authorization"
+ "Range"
+ "x-ms-range"
+ "If-Match"
+ "If-None-Match"
+ "If-Modified-Since"
+ "If-Unmodified-Since"
+ "Referer"
+ "Host"
+ "Content-Disposition"
.
+ "WWW-Authenticate"
.
+
+ var secretClient = new SecretClient(new Uri("http://example.com"), new DefaultAzureCredential());
+
+ using (HttpPipeline.CreateClientRequestIdScope("<custom-client-request-id>"))
+ {
+ // The HTTP request resulting from the client call would have x-ms-client-request-id value set to <custom-client-request-id>
+ secretClient.GetSecret("<secret-name>");
+ }
+
+
+ var client = new AlarmClient();
+ client.Ring += (SyncAsyncEventArgs e) =>
+ {
+ Console.WriteLine("Wake up!");
+ return Task.CompletedTask;
+ };
+
+ client.Snooze();
+
+ If you need to call an async method from a synchronous event handler,
+ you have two options. You can use
+ var client = new AlarmClient();
+ client.Ring += async (SyncAsyncEventArgs e) =>
+ {
+ await Console.Out.WriteLineAsync("Wake up!");
+ };
+
+ await client.SnoozeAsync();
+
+
+ var client = new AlarmClient();
+ client.Ring += async (SyncAsyncEventArgs e) =>
+ {
+ if (e.IsRunningSynchronously)
+ {
+ Console.WriteLine("Wake up!");
+ }
+ else
+ {
+ await Console.Out.WriteLineAsync("Wake up!");
+ }
+ };
+
+ client.Snooze(); // sync call that blocks
+ await client.SnoozeAsync(); // async call that doesn't block
+
+
+ var client = new AlarmClient();
+ client.Ring += (SyncAsyncEventArgs e) =>
+ throw new InvalidOperationException("Alarm unplugged.");
+
+ try
+ {
+ client.Snooze();
+ }
+ catch (AggregateException ex)
+ {
+ ex.Handle(e => e is InvalidOperationException);
+ Console.WriteLine("Please switch to your backup alarm.");
+ }
+
+
+ // call a service method, which returns AsyncPageable<T>
+ AsyncPageable<SecretProperties> allSecretProperties = client.GetPropertiesOfSecretsAsync();
+
+ await foreach (SecretProperties secretProperties in allSecretProperties)
+ {
+ Console.WriteLine(secretProperties.Name);
+ }
+
+ or using a while loop:
+
+ // call a service method, which returns AsyncPageable<T>
+ AsyncPageable<SecretProperties> allSecretProperties = client.GetPropertiesOfSecretsAsync();
+
+ IAsyncEnumerator<SecretProperties> enumerator = allSecretProperties.GetAsyncEnumerator();
+ try
+ {
+ while (await enumerator.MoveNextAsync())
+ {
+ SecretProperties secretProperties = enumerator.Current;
+ Console.WriteLine(secretProperties.Name);
+ }
+ }
+ finally
+ {
+ await enumerator.DisposeAsync();
+ }
+
+
+ var credential = new AzureNamedKeyCredential("SomeName", "SomeKey");
+ (string name, string key) = credential;
+
+ *
+
+ ETag tag = ETag.Parse("\"sometag\"");
+ Console.WriteLine(tag.ToString("G"));
+ // Displays: sometag
+ Console.WriteLine(tag.ToString("H"));
+ // Displays: "sometag"
+
+ 0
if response was not received.
+
+ var client = new AlarmClient();
+ client.Ring += async (SyncAsyncEventArgs e) =>
+ {
+ if (e.IsRunningSynchronously)
+ {
+ Console.WriteLine("Wake up!");
+ }
+ else
+ {
+ await Console.Out.WriteLineAsync("Wake up!");
+ }
+ };
+
+ client.Snooze(); // sync call that blocks
+ await client.SnoozeAsync(); // async call that doesn't block
+
+
+ new CancellationTokenSource(TimeSpan.FromSeconds(10)).Token
+
+ for example) will correctly propagate.
+ default
will clear client-side encryption.
+ default
will clear client-side encryption.
+ 0
), some non-empty buffer is returned.
+ 0
), some non-empty buffer is returned.
+
+
+
+ [JsonContainer(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })]
+
+
+ [JsonContainer(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })]
+
+
+
+ [JsonProperty(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })]
+
+
+ [JsonProperty(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })]
+
+
+
+
+
+
+
+
+
+
+
+
+ When you specify an
When using this constructor, you must be aware of a possible misuse of the constructor which takes a DbType parameter.
+ This happens when calling this constructor passing an int 0 and the compiler thinks you are passing a value of DbType.
+ Use Convert.ToInt32(value)
for example to have compiler calling the correct constructor.
+ [CanBeNull] public object Test() { return null; }
+ public void UseTest() {
+ var p = Test();
+ var s = p.ToString(); // Warning: Possible 'System.NullReferenceException'
+ }
+
+ [NotNull] public object Foo() {
+ return null; // Warning: Possible 'null' assignment
+ }
+
Function Definition Table syntax:
+
+ [ContractAnnotation("=> halt")]
+ public void TerminationMethod()
+
+ [ContractAnnotation("halt <= condition: false")]
+ public void Assert(bool condition, string text) // regular assertion method
+
+ [ContractAnnotation("s:null => true")]
+ public bool IsNullOrEmpty(string s) // string.IsNullOrEmpty()
+
+ // A method that returns null if the parameter is null,
+ // and not null if the parameter is not null
+ [ContractAnnotation("null => null; notnull => notnull")]
+ public object Transform(object data)
+
+ [ContractAnnotation("s:null=>false; =>true,result:notnull; =>false, result:null")]
+ public bool TryParse(string s, out Person result)
+
+ public void Foo(string param) {
+ if (param == null)
+ throw new ArgumentNullException("par"); // Warning: Cannot resolve symbol
+ }
+
+ CREATE TABLE [dbo].[Log] (
+ [ID] [int] IDENTITY (1, 1) NOT NULL ,
+ [Date] [datetime] NOT NULL ,
+ [Thread] [varchar] (255) NOT NULL ,
+ [Level] [varchar] (20) NOT NULL ,
+ [Logger] [varchar] (255) NOT NULL ,
+ [Message] [varchar] (4000) NOT NULL
+ ) ON [PRIMARY]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ "DSN=MS Access Database;UID=admin;PWD=;SystemDB=C:\data\System.mdw;SafeTransactions = 0;FIL=MS Access;DriverID = 25;DBQ=C:\data\train33.mdb"
+ "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Work\cvs_root\log4net-1.2\access.mdb;UID=;PWD=;"
+ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Work\cvs_root\log4net-1.2\access.mdb;User Id=;Password=;"
+ System.Data.OleDb.OleDbConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ Microsoft.Data.Odbc.OdbcConnection,Microsoft.Data.Odbc,version=1.0.3300.0,publicKeyToken=b77a5c561934e089,culture=neutral
+ This is an optional package that you can download from
+ http://msdn.microsoft.com/downloads
+ search for ODBC .NET Data Provider.
+ System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ This is an optional package that you can download from
+ http://msdn.microsoft.com/downloads
+ search for .NET Managed Provider for Oracle.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <mapping>
+ <level value="ERROR" />
+ <eventLogEntryType value="Error" />
+ </mapping>
+ <mapping>
+ <level value="DEBUG" />
+ <eventLogEntryType value="Information" />
+ </mapping>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
+ UdpClient udpClient;
+ byte[] buffer;
+ string loggingEvent;
+
+ try
+ {
+ udpClient = new UdpClient(8080);
+
+ while(true)
+ {
+ buffer = udpClient.Receive(ref remoteEndPoint);
+ loggingEvent = System.Text.Encoding.Unicode.GetString(buffer);
+ Console.WriteLine(loggingEvent);
+ }
+ }
+ catch(Exception e)
+ {
+ Console.WriteLine(e.ToString());
+ }
+
+
+ Dim remoteEndPoint as IPEndPoint
+ Dim udpClient as UdpClient
+ Dim buffer as Byte()
+ Dim loggingEvent as String
+
+ Try
+ remoteEndPoint = new IPEndPoint(IPAddress.Any, 0)
+ udpClient = new UdpClient(8080)
+
+ While True
+ buffer = udpClient.Receive(ByRef remoteEndPoint)
+ loggingEvent = System.Text.Encoding.Unicode.GetString(buffer)
+ Console.WriteLine(loggingEvent)
+ Wend
+ Catch e As Exception
+ Console.WriteLine(e.ToString())
+ End Try
+
+
+
+
+
+
+
+
+
+ using log4net.Config;
+ using System.IO;
+ using System.Configuration;
+
+ ...
+
+ DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"]));
+
+
+
+
+
+
+
+
+
+ using log4net.Config;
+ using System.IO;
+ using System.Configuration;
+
+ ...
+
+ DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"]));
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ log4net configuration XML goes here
+
+
+
+
+
+
+
+
+
+ using log4net.Config;
+ using System.IO;
+ using System.Configuration;
+
+ ...
+
+ XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"]));
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ using log4net.Config;
+ using System.IO;
+ using System.Configuration;
+
+ ...
+
+ XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"]));
+
+
+
+
+
+
+
+
+
+ log.Debug("This is entry number: " + i );
+
+
+ if (log.IsDebugEnabled())
+ {
+ log.Debug("This is entry number: " + i );
+ }
+
+
+ GlobalContext.Properties["hostname"] = Environment.MachineName;
+
+
+ ILog log = LogManager.GetLogger("application-log");
+
+ log.Info("Application Start");
+ log.Debug("This is a debug message");
+
+ if (log.IsDebugEnabled)
+ {
+ log.Debug("This is another debug message");
+ }
+
+
+ log.Debug("This is entry number: " + i );
+
+
+ if (log.IsDebugEnabled)
+ {
+ log.Debug("This is entry number: " + i );
+ }
+
+
+ private static readonly bool isDebugEnabled = log.IsDebugEnabled;
+
+
+ if (isDebugEnabled)
+ {
+ log.Debug("This is entry number: " + i );
+ }
+
+
+ StringWriter writer = new StringWriter();
+ Layout.Format(writer, loggingEvent);
+ string formattedEvent = writer.ToString();
+
+
+ ILog log = LogManager.GetLogger(typeof(TestApp));
+ log.Debug("Message 1");
+ log.Warn("Message 2");
+
+
+ DEBUG [main]: Message 1
+ WARN [main]: Message 2
+
+ Format modifier | +left justify | +minimum width | +maximum width | +comment | +
---|---|---|---|---|
%20logger | +false | +20 | +none | +
+ |
+
%-20logger | +true | +20 | +none | +
+ |
+
%.30logger | +NA | +none | +30 | +
+ |
+
false | +20 | +30 | +
+ |
+ |
%-20.30logger | +true | +20 | +30 | +
+ |
+
%timestamp [%thread] %level %logger %ndc - %message%newline
+ %-6timestamp [%15.15thread] %-5level %30.30logger %ndc - %message%newline
+
+ DEBUG - Hello world
+
+
+ <?xml version="1.0" ?>
+
+ <!DOCTYPE log4net:events SYSTEM "log4net-events.dtd" [<!ENTITY data SYSTEM "abc">]>
+
+ <log4net:events version="1.2" xmlns:log4net="http://logging.apache.org/log4net/schemas/log4net-events-1.2>
+ &data;
+ </log4net:events>
+
+
+ LogicalThreadContext.Properties["user"] = userName;
+ log.Info("This log message has a LogicalThreadContext Property called 'user'");
+
+
+ using(LogicalThreadContext.Stacks["LDC"].Push("my context message"))
+ {
+ log.Info("This log message has a LogicalThreadContext Stack message that includes 'my context message'");
+
+ } // at the end of the using block the message is automatically popped
+
+
+ ILog log = LogManager.GetLogger("application-log");
+
+ log.Info("Application Start");
+ log.Debug("This is a debug message");
+
+ if (log.IsDebugEnabled)
+ {
+ log.Debug("This is another debug message");
+ }
+
+
+ using(NDC.Push("my context message"))
+ {
+ ... all log calls will have 'my context message' included ...
+
+ } // at the end of the using block the message is automatically removed
+
+
+ using(log4net.NDC.Push("NDC_Message"))
+ {
+ log.Warn("This should have an NDC message");
+ }
+
+
+ var someValue = "ExampleContext"
+ using(log4net.NDC.PushFormat("NDC_Message {0}", someValue))
+ {
+ log.Warn("This should have an NDC message");
+ }
+
+
+ ThreadContext.Properties["user"] = userName;
+ log.Info("This log message has a ThreadContext Property called 'user'");
+
+
+ using(ThreadContext.Stacks["NDC"].Push("my context message"))
+ {
+ log.Info("This log message has a ThreadContext Stack message that includes 'my context message'");
+
+ } // at the end of the using block the message is automatically popped
+
+
+ using log4net.Util;
+
+ ILog log = LogManager.GetLogger("application-log");
+
+ log.InfoExt("Application Start");
+ log.DebugExt("This is a debug message");
+
+
+ using(log4net.LogicalThreadContext.Stacks["NDC"].Push("Stack_Message"))
+ {
+ log.Warn("This should have an ThreadContext Stack message");
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ string s = OptionConverter.SubstituteVariables("Value of key is ${key}.");
+
+
+ string s = OptionConverter.SubstituteVariables("Value of nonExistentKey is [${nonExistentKey}]");
+
+
+ {key1=value1, key2=value2, key3=value3}
+
+
+ {key1=value1, key2=value2, key3=value3}
+
+
+ using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message"))
+ {
+ log.Warn("This should have an ThreadContext Stack message");
+ }
+
+