Lind_Log_helloworld 1.0.0
dotnet add package Lind_Log_helloworld --version 1.0.0
NuGet\Install-Package Lind_Log_helloworld -Version 1.0.0
<PackageReference Include="Lind_Log_helloworld" Version="1.0.0" />
paket add Lind_Log_helloworld --version 1.0.0
#r "nuget: Lind_Log_helloworld, 1.0.0"
// Install Lind_Log_helloworld as a Cake Addin #addin nuget:?package=Lind_Log_helloworld&version=1.0.0 // Install Lind_Log_helloworld as a Cake Tool #tool nuget:?package=Lind_Log_helloworld&version=1.0.0
SecretClientOptions options = new SecretClientOptions()
{
Retry =
{
Delay = TimeSpan.FromSeconds(2),
MaxRetries = 10,
Mode = RetryMode.Fixed
},
Diagnostics =
{
IsLoggingContentEnabled = true,
ApplicationId = "myApplicationId"
}
};
SecretClient client = new SecretClient(new Uri("http://example.com"), new DefaultAzureCredential(), options);
More on client configuration in client configuration samples
Accessing HTTP Response Details Using Response<T>
Service clients have methods that can be used to call Azure services.
We refer to these client methods service methods.
Service methods return a shared Azure.Core type Response<T>
(in rare cases its non-generic sibling, a raw Response
).
This type provides access to both the deserialized result of the service call,
and to the details of the HTTP response returned from the server.
// create a client
var client = new SecretClient(new Uri("http://example.com"), new DefaultAzureCredential());
// call a service method, which returns Response<T>
Response<KeyVaultSecret> response = await client.GetSecretAsync("SecretName");
// Response<T> has two main accessors.
// Value property for accessing the deserialized result of the call
KeyVaultSecret secret = response.Value;
// .. and GetRawResponse method for accessing all the details of the HTTP response
Response http = response.GetRawResponse();
// for example, you can access HTTP status
int status = http.Status;
// or the headers
foreach (HttpHeader header in http.Headers)
{
Console.WriteLine($"{header.Name} {header.Value}");
}
More on response types in response samples
Setting up console logging
To create an Azure SDK log listener that outputs messages to console use AzureEventSourceListener.CreateConsoleLogger
method.
// Setup a listener to monitor logged events.
using AzureEventSourceListener listener = AzureEventSourceListener.CreateConsoleLogger();
More on logging in diagnostics samples
Reporting Errors RequestFailedException
When a service call fails Azure.RequestFailedException
would get thrown. The exception type provides a Status property with an HTTP status code and an ErrorCode property with a service-specific error code.
try
{
KeyVaultSecret secret = client.GetSecret("NonexistentSecret");
}
// handle exception with status code 404
catch (RequestFailedException e) when (e.Status == 404)
{
// handle not found error
Console.WriteLine("ErrorCode " + e.ErrorCode);
}
More on handling responses in response samples
Consuming Service Methods Returning AsyncPageable<T>
If a service call returns multiple values in pages, it would return Pageable<T>/AsyncPageable<T>
as a result. You can iterate over AsyncPageable
directly or in pages.
// call a service method, which returns AsyncPageable<T>
AsyncPageable<SecretProperties> allSecretProperties = client.GetPropertiesOfSecretsAsync();
await foreach (SecretProperties secretProperties in allSecretProperties)
{
Console.WriteLine(secretProperties.Name);
}
For more information on paged responses, see Pagination with the Azure SDK for .NET.
Consuming Long-Running Operations Using Operation<T>
Some operations take long time to complete and require polling for their status. Methods starting long-running operations return *Operation<T>
types.
The WaitForCompletionAsync
method is an easy way to wait for operation completion and get the resulting value.
// create a client
SecretClient client = new SecretClient(new Uri("http://example.com"), new DefaultAzureCredential());
// Start the operation
DeleteSecretOperation operation = await client.StartDeleteSecretAsync("SecretName");
Response<DeletedSecret> response = await operation.WaitForCompletionAsync();
DeletedSecret value = response.Value;
Console.WriteLine(value.Name);
Console.WriteLine(value.ScheduledPurgeDate);
More on long-running operations in long-running operation samples
Mocking
One of the most important cross-cutting features of our new client libraries using Azure.Core is that they are designed for mocking. Mocking is enabled by:
- providing a protected parameterless constructor on client types.
- making service methods virtual.
- providing APIs for constructing model types returned from virtual service methods. To find these factory methods look for types with the ModelFactory suffix, e.g.
SecretModelFactory
.
For example, the ConfigurationClient.Get method can be mocked (with Moq) as follows:
// Create a mock response
var mockResponse = new Mock<Response>();
// Create a mock value
var mockValue = SecretModelFactory.KeyVaultSecret(
SecretModelFactory.SecretProperties(new Uri("http://example.com"))
);
// Create a client mock
var mock = new Mock<SecretClient>();
// Setup client method
mock.Setup(c => c.GetSecret("Name", null, default))
.Returns(Response.FromValue(mockValue, mockResponse.Object));
// Use the client mock
SecretClient client = mock.Object;
KeyVaultSecret secret = client.GetSecret("Name");
More on mocking in mocking samples
Distributed tracing with Application Insights
Application Insights, a feature of Azure Monitor, is an extensible Application Performance Management (APM) service for developers and DevOps professionals. Use it to monitor your live applications. It will automatically detect performance anomalies, and includes powerful analytics tools to help you diagnose issues and to understand what users actually do with your app
If your application already uses ApplicationInsights, automatic collection of Azure SDK traces is supported since version 2.12.0
.
To setup ApplicationInsights tracking for your application follow the Start Monitoring Application guide.
More on diagnostics in diagnostics samples.
Troubleshooting
Three main ways of troubleshooting failures are inspecting exceptions, enabling logging, and distributed tracing
Next steps
Explore and install available Azure SDK libraries.
Contributing
This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.
When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repositories using our CLA.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
.NET Core | netcoreapp3.1 is compatible. |
-
.NETCoreApp 3.1
- Newtonsoft.Json (>= 12.0.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 1 | 4/30/2020 |