gpt4 book ai didi

arm-template - Azure ARM uniqueString 函数模拟

转载 作者:行者123 更新时间:2023-12-01 13:36:01 26 4
gpt4 key购买 nike

我需要使用 to 方式将 Sql 数据库部署到 Azure Sql Server 中:ARM 模板方式和使用 C# 代码的更自定义方式。有一个名为 uniqueString(string) 的 ARM 模板函数生成给定字符串的伪随机散列。这是一个确定性的纯函数。

我需要找到一种方法来从我的 C# 代码中完全模仿这个函数的行为。即我需要将此函数重现到我的 C# 代码中。

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

MSDN reference for uniqueString()

最佳答案

我已经断断续续地研究了几年了,我终于找到了付费...

// "zcztcwvu6iyg6"
var unique = ArmUniqueString("tyeth");
我的 ArmUniqueString函数是一些与 Azure Stack Hub Development Kit 一起分发的 dll 的包装器。这基本上是一个虚拟机镜像,其中包含可以在本地运行的 Azure 服务器端平台...
private static string ArmUniqueString(string originalString)
{

var assembly = Assembly.GetAssembly(
typeof(Microsoft.WindowsAzure.ResourceStack.Frontdoor.Templates.Engines.TemplateEngine)
);

var functions = assembly.GetType(
"Microsoft.WindowsAzure.ResourceStack.Frontdoor.Templates.Expressions.TemplateExpressionBuiltInFunctions"
);

var uniqueString = functions.GetMethod(
"UniqueString",
BindingFlags.Static | BindingFlags.NonPublic
);

var parameters = new object[] {
"uniqueString",
new JToken[] {
(JToken)originalString
}
};

var result = uniqueString.Invoke(null, parameters).ToString();

return result;

}
您需要下载 Azure Stack Hub 开发工具包并将其解压缩以获取 dll:
  • 下载Azure Stack Hub Development Kit - 警告:大约 22Gb!
  • 运行安装程序以解压缩 55Gb *.vhdx
  • 挂载*.vhdx,或在本地展开/解压
  • 在 *.vhdx 中,找到此文件并将其解压缩到某处:
  • CloudBuilder\CloudDeployment\NuGetStore\Microsoft.AzureStack.Setup.Services.ResourceManager.5.20.1335.300.nupkg

  • content\Website\bin *.nupkg 中的文件夹包含必要的 dll

  • 要使用它们,请添加对 Microsoft.WindowsAzure.ResourceStack.Frontdoor.Templates.dll 的程序集引用。 (它对 bin 文件夹中的其他文件有一些依赖关系)并且包含 TemplateExpressionBuiltInFunctions类(class)。上面的代码只是使用反射来调用私有(private) UniqueString来自该程序集的函数,需要做一些工作来将参数编码为适当的 JToken类型。
    如果您想深入了解实现细节,您可能可以对程序集运行反编译器以找出它在幕后所做的事情......
    注意 - 归功于这篇博客文章为我指明了正确的方向:
    https://the.agilesql.club/2017/12/azure-arm-template-function-internals/

    关于arm-template - Azure ARM uniqueString 函数模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43295720/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com