代码中的Azure部署插槽和URL
问题描述:
我的解决方案中有一个txt文件,用作我的应用发送的电子邮件的模板。在文件中有链接包含我的应用程序的主机URL。当我部署到Azure应用服务中的临时插槽时,部署的URL为myapp-staging.azurewebsites.net,并且在暂存中测试电子邮件时,我们必须包含该URL。代码中的Azure部署插槽和URL
在生产中,主机URL会myapp.customdomain.com。现在文本文件中的网址需要反映生产槽中使用的这个网址。
是否有使用部署插槽和交换,如果我需要在代码的URL部署到每个插槽的好处呢?我查看了部署槽应用设置,但我没有看到如何使用这些重新编写这些文本文件中的URL。
答
我如何使用这些重新写在那些文本文件的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
内容生产和分期槽两个独立的文本文件。
答
你应该只存储服务器地址后,资源路径,在这种情况下,你需要得到的代码本身的服务器网址,并用它包含文件中的路径的其余部分串联。
为了让你将使用当前的服务器路径:
string.Format("{0}://{1}", Request.Url.Scheme, Request.Url.Authority)
可能有一个编码解决方案,您可以检查请求URL。你使用什么语言/工具集? –
我们使用的是C#。 – andy