如何使用ARM和C#将应用程序部署到Azure?
问题描述:
我见过一些如何使用ARM和C#创建存储资源的例子。我假设应用程序也有可能。但是,我找不到一个工作示例。 理想情况下,我想要一个可以部署另一个应用程序的c#/ Web api应用程序。该过程应该完全自动化。 基本上,我想用自己的配置创建相同应用程序的新实例 - 该过程将由新客户注册我的SaaS来触发。 有人能请给一些关于如何处理上面的指针? 谢谢。如何使用ARM和C#将应用程序部署到Azure?
答
您似乎希望在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.Fluent到manage 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
您好@bdristan,任何更新?您现在能够使用C#代码以编程方式管理Azure应用程序服务并将Web应用程序(部署包)部署到Azure应用程序服务Web应用程序吗? –
嗨弗雷德汉,我还没有得到它。但是,我认为下面提供的解决方案将适用于我。我需要在两个月内解决这个问题。 – bdristan