2017-04-08 138 views
3

我需要使用以下方式將Sql數據庫部署到Azure Sql Server中:ARM模板方式以及使用C#代碼的更自定義方式。有一個名爲uniqueString(string)的ARM模板函數可生成給定字符串的僞隨機散列。這是一個確定性的純函數。Azure ARM uniqueString函數模仿

我需要找到一種方法,從我的C#代碼中完全模仿此功能的行爲。即我需要將這個函數複製到我的C#代碼中。

我在哪裏可以找到ARM Api使用的算法?

MSDN reference for uniqueString()

回答

1

我發現了一些PowerShell代碼在這裏做這個:https://blogs.technet.microsoft.com/389thoughts/2017/12/23/get-uniquestring-generate-unique-id-for-azure-deployments/

我轉換這個代碼爲C#:

public string GetUniqueString(string id, int length = 13) 
{ 
    string result = ""; 
    var buffer = System.Text.Encoding.UTF8.GetBytes(id); 
    var hashArray = new System.Security.Cryptography.SHA512Managed().ComputeHash(buffer); 
    for(int i = 1; i <= length; i++) 
    { 
     var b = hashArray[i]; 
     var c = Convert.ToChar((b % 26) + (byte)'a'); 
     result = result + c; 
    } 

    return result; 
} 
0

我終於找到了解決辦法。我使用了一個非常簡單的ARM模板,目標是僅輸出uniqueString命令的結果。然後我在C#代碼中獲取這個輸出。這個解決方案並不是最快的解決方案;-),但它可以按照需要工作。