如何使用ARM和C#将应用程序部署到Azure?

问题描述:

我见过一些如何使用ARM和C#创建存储资源的例子。我假设应用程序也有可能。但是,我找不到一个工作示例。 理想情况下,我想要一个可以部署另一个应用程序的c#/ Web api应用程序。该过程应该完全自动化。 基本上,我想用自己的配置创建相同应用程序的新实例 - 该过程将由新客户注册我的SaaS来触发。 有人能请给一些关于如何处理上面的指针? 谢谢。如何使用ARM和C#将应用程序部署到Azure?

+0

您好@bdristan,任何更新?您现在能够使用C#代码以编程方式管理Azure应用程序服务并将Web应用程序(部署包)部署到Azure应用程序服务Web应用程序吗? –

+0

嗨弗雷德汉,我还没有得到它。但是,我认为下面提供的解决方案将适用于我。我需要在两个月内解决这个问题。 – bdristan

您似乎希望在C#代码中以编程方式将Web应用程序(部署包)部署到Azure应用程序服务Web应用程序,您可以尝试使用允许将zip文件扩展到文件夹的Kudu Zip API。下面的示例代码适合我,可以参考它。

//get username and password from publish profile on Azure portal 
var username = "xxxxx"; 
var password = "xxxxxxxxxxxxxxxxxxxx"; 
var AppName = "{your_app_name}"; 

var base64Auth = Convert.ToBase64String(Encoding.Default.GetBytes($"{username}:{password}")); 
var file = File.ReadAllBytes(@"C:\Users\xxx\xxx\WebApplication1.zip"); 
MemoryStream stream = new MemoryStream(file); 

using (var client = new HttpClient()) 
{ 
    client.DefaultRequestHeaders.Add("Authorization", "Basic " + base64Auth); 
    var baseUrl = new Uri($"https://{AppName}.scm.azurewebsites.net/"); 
    var requestURl = baseUrl + "api/zip/site/wwwroot"; 
    var httpContent = new StreamContent(stream); 
    var response = client.PutAsync(requestURl, httpContent).Result; 
} 

此外,你可以使用Microsoft.Azure.Management.Fluentmanage your Azure app service

您可以从Github获取.Net的Azure管理库。对Azure App Service的支持从v1.2开始预览。这使得一个非常直观的语法。

var webApp = azure.WebApps.Define(appName) 
    .WithRegion(Region.USWest) 
    .WithNewResourceGroup(rgName) 
    .WithNewFreeAppServicePlan() 
    .Create(); 

有很多为天青应用服务的Windows和Linux版本的代码示例如下所示:https://github.com/Azure/azure-sdk-for-net/tree/Fluent

还有如何在这种情况下的处理数据的一些有价值的阅读材料;各种可能性和设计模式涵盖在https://docs.microsoft.com/en-us/azure/sql-database/sql-database-design-patterns-multi-tenancy-saas-applications