Sample: File operations with Attachments and Notes using the Dataverse SDK for .NET
This .NET 6.0 sample demonstrates how to perform operations using file data with Attachment (ActivityMimeAttachment) and Note (Annotation) tables using the Dataverse SDK for .NET.
This sample uses the Microsoft.PowerPlatform.Dataverse.Client.ServiceClient Class.
Prerequisites
- Microsoft Visual Studio 2022
- Access to Dataverse with system administrator or system customizer privileges.
How to run the sample
Clone or download the PowerApps-Samples repository.
Open the
PowerApps-Samples\dataverse\orgsvc\C#-NETCore\AttachmentAndAnnotationOperations\AttachmentAndAnnotationOperations.sln
file using Visual Studio 2022.This solution contains two projects that include samples:
- ActivityMimeAttachmentOperations: Demonstrates using Attachments.
- AnnotationOperations: Demonstrates using Annotations.
In Solution Explorer, right-click the project you want to run and choose Set as Startup Project.
In either project, edit the appsettings.json file. Set the connection string
Url
andUsername
parameters as appropriate for your test environment.The environment Url can be found in the Power Platform admin center. It has the form
https://<environment-name>.crm.dynamics.com
.Build the solution, and then run the desired project.
When the sample runs, you will be prompted in the default browser to select an environment user account and enter a password. To avoid having to do this every time you run a sample, insert a password parameter into the connection string in the appsettings.json
file. For example:
{
"ConnectionStrings": {
"default": "AuthType=OAuth;Url=https://myorg.crm.dynamics.com;Username=someone@myorg.onmicrosoft.com;Password=mypassword;RedirectUri=http://localhost;AppId=51f81489-12ee-4a9e-aaae-a2591f45987d;LoginPrompt=Auto"
}
}
Read the following important information about using a connection string in application code.
Important
Microsoft recommends that you use the most secure authentication flow available. The authentication flow described in this article requires a very high degree of trust in the application, and carries risks that are not present in other flows. You should only use this flow when other more secure flows, such as managed identities, aren't viable.
Tip
You can set a user environment variable named DATAVERSE_APPSETTINGS
to the file path of the appsettings.json file stored anywhere on your computer. The samples will use that appsettings file if the environment variable exists and is not null. Be sure to log out and back in again after you define the variable for it to take affect. To set an environment variable, go to Settings > System > About, select Advanced system settings, and then choose Environment variables.
Demonstrates
This sample is a solution with two projects. See the respective README files for details on each project.
- SDK for .NET Attachment (ActivityMimeAttachment) Operations sample README
- SDK for .NET Annotation (Note) Operations sample README
Utility class
Both projects use a shared Utility
class to perform common operations. This class contains three static methods:
GetMimeType
Based on a FileInfo parameter, this function uses Microsoft.AspNetCore.StaticFiles.FileExtensionContentTypeProvider to try to get the mimetype of the file. If this cannot be determined, it returns application/octet-stream
GetMaxUploadFileSize
Using the IOrganizationService service
parameter, this function returns the integer maxuploadfilesize
value from the organization
table.
SetMaxUploadFileSize
Using the IOrganizationService service
parameter, this function sets the integer maxuploadfilesize
value from the organization
table to the value of the integer maxUploadFileSizeInBytes
parameter.
See also
Use file data with Attachment and Note records
Sample: Attachment and Annotation file operations using Dataverse Web API