我的解决方案中有一个txt文件,用作我的应用发送的电子邮件的模板。在文件中有链接,其中包含我的应用程序的主机URL。当我部署到Azure App Service中的临时插槽时,部署的URL是myapp-staging.azurewebsites.net,并且在暂存时测试电子邮件,我们这些链接必须包含该URL。
在制作中,主机网址为myapp.customdomain.com。现在,文本文件中的url需要反映生产槽中使用的URL。
如果我需要将代码中的URL部署到每个插槽,是否有办法使用部署插槽和交换的好处?我查看了部署插槽应用程序设置,但我不知道如何使用这些设置来重写这些文本文件中的URL。
答案 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
内容的单独文本文件部署到生产和暂存插槽。