Current Setup:
- Running on mcr.microsoft.com/dotnet/aspnet:7.0-jammy AS runtime
- Running on mcr.microsoft.com/dotnet/sdk:7.0-jammy AS build
- .NET Core 7.0
- Microsoft.InformationProtection.File:1.14.128 – ABC.DRM.Infrastructure.csproj
- Microsoft.InformationProtection.File.Ubuntu2204:1.14.128 – ABC.DRM.Infrastructure.csproj
- ABC DRM Contracts located in ABC.DRM.Abstractions.csproj
- Microsoft.NET.Sdk.Web – ABC.UI.csproj
I am attempting to wrap sensitive organisation documents using the MIP SDK in a project. I development on Windows, but Dockerize the application into an Ubuntu 22.04 container which gets deployed onto a managed AKS (Azure Kubernetes Environment/Azure Container Instance) environment with Linux nodes. Running the application on Microsoft Azure App Service using a Windows Service App plan the application runs with no problems.
From this post .net MIP SDK on Ubuntu 2204 fails to load libraries I followed Tom Moser advice and utilised his Dockerfile from https://gist.github.com/tommoser/ee3adaed016dc7086557c35b4e2548d9.
I have ensured that the dependencies as per the proposed Dockerfile is installed. Running the application on k8s works excellent, however when the application hits the CreateMipContext in the DI managed Singleton, our Sentry environment reports “System.EntryPointNotFoundException – Unable to find an entry point named ‘?’ in shared library ‘mip_dotnet’.”
The same errors also occurs on when running the application on Microsoft Azure App Service using a Linux service plan.
System.EntryPointNotFoundException: Unable to find an entry point named '?' in shared library 'mip_dotnet'.
Microsoft.InformationProtection.Internal.SdkWrapperPINVOKE.MipConfiguration_SetLoggerConfiguration(HandleRef jarg1, HandleRef jarg2)
Microsoft.InformationProtection.Internal.MipConfiguration.SetLoggerConfiguration(LoggerConfiguration loggerConfiguration)
Microsoft.InformationProtection.Utils.MIPHelper.CreateMipContext(MipConfiguration mipConfiguration)
Microsoft.InformationProtection.MIP.CreateMipContext(MipConfiguration mipConfiguration)
ABC.DRM.Infrastructure.MIP.MicrosoftInformationProtectionEngine..ctor(IOptions`1 configuration, IOptions`1 azureAd, IAuthDelegate authDelegate, IConsentDelegate consentDelegate) in /src/ABC.DRM.Infrastructure/MIP/MicrosoftInformationProtectionEngine.cs:line 54
A snippet of the managed singleton:
// Initialize MIP, create config and MipContext.
// *** ONLY ONE MIP CONTEXT SHOULD EXIST PER APPLICATION ***
var subDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
Microsoft.InformationProtection.MIP.Initialize(MipComponent.File, subDir);
MipConfiguration mipConfig = new(appInfo, "mip_data", LogLevel.Trace, false);
_mipContext = Microsoft.InformationProtection.MIP.CreateMipContext(mipConfig);
I am completely stumped as to what the possible problem might be, as I have ensured all Linux shared libraries (.so) is residing as siblings next to the executing assembly, and all Windows dll’s remain with the x64 and x86 folders. Not sure whether I am just missing something or whether this might be an issue within the library.