I found a solution following this tutorial to start an Angular Application from ASP MVC: https://dotnetthoughts.net/how-to-use-angular4-wth-aspnet-mvc/
Now, running Angular from an ASP MVC, when user make the first request to IIS, ASP get the request and then I'm able to get client MAC Address (https://www.codeproject.com/Questions/709517/answer.aspx):
[DllImport( "Iphlpapi.dll" )]
private static extern int SendARP( Int32 dest, Int32 host, ref Int64 mac, ref Int32 length );
[DllImport( "Ws2_32.dll" )]
private static extern Int32 inet_addr( string ip );
private string GetMACAddress() {
try {
string userip = Request.UserHostAddress;
string strClientIP = Request.UserHostAddress.ToString().Trim();
Int32 ldest = inet_addr( strClientIP );
Int32 lhost = inet_addr( "" );
Int64 macinfo = new Int64();
Int32 len = 6;
int res = SendARP( ldest, 0, ref macinfo, ref len );
string mac_src = macinfo.ToString( "X" );
while ( mac_src.Length < 12 ) {
mac_src = mac_src.Insert( 0, "0" );
}
string mac_dest = "";
for ( int i = 0; i < 11; i++ ) {
if ( 0 == ( i % 2 ) ) {
if ( i == 10 ) {
mac_dest = mac_dest.Insert( 0, mac_src.Substring( i, 2 ) );
} else {
mac_dest = "-" + mac_dest.Insert( 0, mac_src.Substring( i, 2 ) );
}
}
}
return mac_dest;
} catch ( Exception err ) {
return $"ERRO: {err.Message}";
}
}
public ActionResult Index() {
ViewBag.MAC = this.GetMACAddress();
return View();
}