2017-10-09 68 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)