2017-10-09 106 views
0

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

在生产中,主机URL会myapp.customdomain.com。现在文本文件中的网址需要反映生产槽中使用的这个网址。

是否有使用部署插槽和交换,如果我需要在代码的URL部署到每个插槽的好处呢?我查看了部署槽应用设置,但我没有看到如何使用这些重新编写这些文本文件中的URL。

+0

可能有一个编码解决方案,您可以检查请求URL。你使用什么语言/工具集? –

+0

我们使用的是C#。 – andy

回答

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内容生产和分期槽两个独立的文本文件。

0

你应该只存储服务器地址后,资源路径,在这种情况下,你需要得到的代码本身的服务器网址,并用它包含文件中的路径的其余部分串联。

为了让你将使用当前的服务器路径:

string.Format("{0}://{1}", Request.Url.Scheme, Request.Url.Authority)