DnsClient.NET
DnsClient.NET copied to clipboard
Unhandled Exception when used in AWS Lambda Environment
Just to let you know: When your library is embedded into a program that is executed in an AWS Lambda environment, it throws an Unhandled Exception: System.IO.FileNotFoundException: Could not find file '/sys/class/net/lo/mtu'.
After some research it turned out, the problem is in the method NetworkInterface.GetAllNetworkInterfaces(); which seems to be not always working under Linux. I opened a stackoverflow thread: https://stackoverflow.com/questions/46567897/how-to-prevent-filenotfoundexception-in-getallnetworkinterfaces-when-called-in
That's a bug in dotnet core which should be fixed in .net core 2.0... Just have to find time to target netstandard2.0 for this lib one day...
Yes, indeed: https://github.com/dotnet/corefx/issues/24422
The next version will have a netstandard2.0 target, Maybe those things will be fixed. Anyways, even if it is not fixed, you'll have to work around by determine the DNS endpoints manually with code which works on the platform you are running it on. This library cannot close all those gaps ;) But let me know how it goes anyways
I can confirm that this is still a problem in lambda even after upgrading to dotnetcore 2.1.0
ok, that's unfortunate. I'll reopen the issue for tracking. Not sure if I can do anything to fix it though...
DnsClient should work though when you don't use "autodiscovery" of DNS servers and pass in one or more, right?
Yes, It works without autodiscovery.
My workaround for anyone else experiencing this issue is to use a bash command to get the name server to query.
var nameServer = $"cat /etc/resolv.conf |grep -i '^nameserver'|head -n1|cut -d ' ' -f2".Bash().Trim();
Using a bash ShellHelper I found.