<%@ Import Namespace="System" %> <%@ Import Namespace="System.IO" %> <%@ Import Namespace="System.Web" %> <%@ Import Namespace="System.Xml" %> <%@ Import Namespace="System.Reflection" %> <%@ Page Language="c#" debug="true" %> <%=getProduct() %> <% if (GetCustomSettings() && File.Exists(@"c:\programdata\bccontainerhelper\extensions\"+getContainerName()+@"\Certificate.cer") && ! isTraefikUsed()) { %> <% } var rdps = System.IO.Directory.GetFiles(Server.MapPath("."), "*.rdp"); if (rdps.Length > 0) { %> <% for(int i=0; i <% } } if (System.IO.File.Exists(@"c:\demo\status.txt")) { var status = System.IO.File.ReadAllText(@"c:\demo\status.txt"); if (status.Contains("Desktop setup complete!")) { %> <% } else { %> <% } %> <% } if (GetCustomSettings()) { %> <% if (File.Exists(@"c:\programdata\bccontainerhelper\extensions\"+getContainerName()+@"\clickonce.txt")) { %> <% } if (isHttps()) { %> <% } %> <% if (isApisEnabled()) { %> <% } var vsix = System.IO.Directory.GetFiles(@"c:\programdata\bccontainerhelper\extensions\"+getContainerName(), "*.vsix"); if (vsix.Length == 1) { var vsixURL = ""; if (isTraefikUsed()) vsixURL = "https://" + getHostname() + "/" + getContainerName() + "dl/" + System.IO.Path.GetFileName(vsix[0]); else vsixURL = "http://" + getLandingPageUrl() + ":8080/" + System.IO.Path.GetFileName(vsix[0]); %> <% } } if (System.IO.Directory.Exists(@"C:\ProgramData\bcContainerHelper\traefikforbc")) { %>
<% =createQrForLandingPage() %>  

<%=getProduct() %>

<%=getBuildNumber() %>

<%=getAzureSQL() %>

Download Self Signed Certificate

The <%=getProduct() %> is secured with a self-signed certificate. In order to connect to the environment, you must trust this certificate. Select operating system and browser to view the process for downloading and trusting the certificate: Download Certificate
Windows (Edge/IE/Chrome) Windows (Firefox) Windows Phone iOS (Safari) Android

Remote Desktop Access

<% if (i == 0) { if (rdps.Length > 1) { %> The <%=getProduct() %> contains multiple servers. You can connect to the individual servers by following these links. <% } else { %> You can connect to the server in the <%=getProduct() %> by following this link. <% } } %> If connections to RDP fails, you might need to add an incoming rule to the networksecurity group allowing port 3389 for IP address <%=GetIPAddress() %>. <% =System.IO.Path.GetFileNameWithoutExtension(rdps[i]) %>

Installation complete

Installation NOT complete

You can view the installation status by following this link. View Installation Status

Access the <%=getProduct() %>

Choose these links to access the <%=getProduct() %> using the Web Client. Web Client
The <%=getProduct() %> supports running the Microsoft Dynamics NAV Windows client over the internet. Choose this link to install the Microsoft Dynamics NAV Windows client using ClickOnce. Install Windows Client
If you have installed the Microsoft Dynamics NAV Universal App on your phone, tablet or desktop computer and want to configure the app to connect to this <%=getProduct() %>, choose this link. Configure App

Access the <%=getProduct() %> using Web Services

The <%=getProduct() %> exposes functionality as SOAP web services. Choose this link to view the web services. View SOAP Web Services
The <%=getProduct() %> exposes data as restful OData web services. Choose this link to view the web services View OData Web Services
The <%=getProduct() %> exposes the API endpoint. APIs are exposed using <API Base Url>/<Publisher>/<Group>/<Version>/<Entity>. Choose this link to get the base URL for the APIs. View API base URL
Example: <% =getApisSampleUrl() %>

Access the <%=getProduct() %> using Visual Studio Code

Download the AL Language Customization for Visual Studio Code (.vsix) <% =System.IO.Path.GetFileNameWithoutExtension(vsix[0]) %>
launch.json settings:
  "server": "https://<%=getHostname() %>",
  "serverInstance": "<%=getServerInstance() %>",
  "tenant": "<%=getTenant() %>",
  "authentication": "UserPassword", <% if (isTraefikUsed()) { %>
  "port": 443, <% } %>

Traefik containers

This VM is setup with Traefik and below are the containers setup for access through Traefik.
<% var directories = System.IO.Directory.GetDirectories(@"C:\ProgramData\bcContainerHelper\Extensions", "*"); foreach(var directory in directories) { if (System.IO.Directory.Exists(directory+@"\my")) { var name = System.IO.Path.GetFileName(directory); var hostname = "https://"+getHostname(); var webclient = "/"+name; var soap = webclient+"soap"; var rest = webclient+"rest"; var developer = webclient+"dev"; var vsixFile = System.IO.Directory.GetFiles(@"c:\programdata\bccontainerhelper\extensions\"+name, "*.vsix"); var vsix = ""; if (vsixFile.Length == 1) { vsix = webclient+"dl/"+System.IO.Path.GetFileName(vsixFile[0]); } %> <% } } %>
NameWebClientSoapRestDeveloper EndpointVSIX
<%=name %><%=webclient %><%=soap %><%=rest %><%=developer %><%=vsix %>
<% } %>