代码中的Azure部署插槽和URL

时间:2017-10-09 21:11:43

标签: azure azure-web-sites

我的解决方案中有一个txt文件,用作我的应用发送的电子邮件的模板。在文件中有链接,其中包含我的应用程序的主机URL。当我部署到Azure App Service中的临时插槽时,部署的URL是myapp-staging.azurewebsites.net,并且在暂存时测试电子邮件,我们这些链接必须包含该URL。

在制作中,主机网址为myapp.customdomain.com。现在,文本文件中的url需要反映生产槽中使用的URL。

如果我需要将代码中的URL部署到每个插槽,是否有办法使用部署插槽和交换的好处?我查看了部署插槽应用程序设置,但我不知道如何使用这些设置来重写这些文本文件中的URL。

2 个答案:

答案 0 :(得分:0)

您应该只在服务器地址之后存储资源路径,在这种情况下,您需要在代码本身中获取服务器URL并与文件中包含的其余路径连接。

要获取当前服务器路径,您将使用:

usefulInformation

答案 1 :(得分:0)

  

我如何使用这些来重写这些文本文件中的URL。

首先,您可以根据WEBSITE_SITE_NAME动态检查并替换文本文件中的hostURL。以下代码段供您参考。

var siteName = Environment.ExpandEnvironmentVariables("%WEBSITE_SITE_NAME%");

string template = System.IO.File.ReadAllText(Server.MapPath("~/Content/email.txt"));

//determine if it is staging slot

if (siteName.IndexOf("-staging") > 0)
{
    //replace hostURL based on siteName

    template = Regex.Replace(template, @"hostURL:myapp.azurewebsites.net", "hostURL:myapp-staging.azurewebsites.net");
    System.IO.File.WriteAllText(Server.MapPath("~/Content/email.txt"), template);
}
else
{
    //replace hostURL based on siteName

    template = Regex.Replace(template, @"hostURL:myapp.azurewebsites.net", "hostURL:myapp.customdomain.com");
    System.IO.File.WriteAllText(Server.MapPath("~/Content/email.txt"), template);
}

其次,如果可能,您可以将两个具有不同hostURL内容的单独文本文件部署到生产和暂存插槽。