Azure App Service Add Custom Domain .Net Core

215 views Asked by At

I am following a sample from https://github.com/davidebbo/AzureWebsitesSamples

private static ResourceManagementClient _resourceGroupClient;
private static WebSiteManagementClient _websiteClient;
private static AzureEnvironment _environment;
private static DnsManagementClient _dnsClient;

static string _ClientId = Startup.StaticConfig.GetValue<string>("Azure:ClientId");
static string _ClientKey = Startup.StaticConfig.GetValue<string>("Azure:ClientSecret");
static string _TenantId = Startup.StaticConfig.GetValue<string>("Azure:TenantId");
static string _SubscriptionId = Startup.StaticConfig.GetValue<string>("Azure:SubscriptionId");
static string _ResourceGroupName = Startup.StaticConfig.GetValue<string>("Azure:ResourceGroupName");
static string _AppName = Startup.StaticConfig.GetValue<string>("Azure:AppName");

public static string ResourceGroupName { get => _ResourceGroupName; set => _ResourceGroupName = value; }

public static async Task MainAsync()
{
    // Set Environment - Choose between Azure public cloud, china cloud and US govt. cloud
    _environment = AzureEnvironment.PublicEnvironments[EnvironmentName.AzureCloud];

    // Get the credentials
    TokenCloudCredentials cloudCreds = await GetCredsFromServicePrincipal();

    var tokenCreds = new TokenCredentials(cloudCreds.Token);

    //var loggingHandler = new LoggingHandler(new HttpClientHandler());

    // Create our own HttpClient so we can do logging
    var httpClient = new HttpClient();

    // Use the creds to create the clients we need
    _resourceGroupClient = new ResourceManagementClient(_environment.GetEndpointAsUri(AzureEnvironment.Endpoint.ResourceManager), tokenCreds );
    _resourceGroupClient.SubscriptionId = cloudCreds.SubscriptionId;
    _websiteClient = new WebSiteManagementClient(_environment.GetEndpointAsUri(AzureEnvironment.Endpoint.ResourceManager), tokenCreds);
    _websiteClient.SubscriptionId = cloudCreds.SubscriptionId;
    _dnsClient = new DnsManagementClient(tokenCreds);

    AddCustomDomainToSite("mycustomdomain.com");

    
}

private static async Task<TokenCloudCredentials> GetCredsFromServicePrincipal()
{
    // Quick check to make sure we're not running with the default app.config
    if (_SubscriptionId[0] == '[')
    {
        throw new Exception("You need to enter your appSettings in app.config to run this sample");
    }

    var authority = String.Format("{0}{1}", _environment.Endpoints[AzureEnvironment.Endpoint.ActiveDirectory], _TenantId);
    var authContext = new AuthenticationContext(authority);
    var credential = new ClientCredential(_ClientId, _ClientKey);
    var authResult = await authContext.AcquireTokenAsync(_environment.Endpoints[AzureEnvironment.Endpoint.ActiveDirectoryServiceEndpointResourceId], credential);
    return new TokenCloudCredentials(_SubscriptionId, authResult.AccessToken);
}


static void AddCustomDomainToSite(string sDomainName)
{

    Domain domain = new Domain();

    _websiteClient.Domains.CreateOrUpdateAsync(_ResourceGroupName, "mycustomdomain.com", domain);
}

I am trying to add mycustomdomain.com to my Azure app service. When I execute the code _websiteClient.Domains.CreateOrUpdateAsync(_ResourceGroupName, "mycustomdomain.com", domain);, nothing happens. I do not get any errors, and I do not see the custom domain listed under Custom Domains in my app service.

I have already verified ownership of the domain, and I can add it to my app service via the portal, but I am trying to add it through C#. Can someone please help me?

1

There are 1 answers

1
Bram On

Did you already check on "_websiteClient.WebApps.CreateOrUpdateHostNameBindingAsync(resourcegroup, appservicename, hostname, binding)"?

The binding i give as parameter is this one:

var binding = new HostNameBinding{CustomHostNameDnsRecordType = CustomHostNameDnsRecordType.CName};

For me this is working to add a custom domain to the app service.