gpt4 book ai didi

c# - Azure工作主机未运行.net 4.5.1?

转载 作者:行者123 更新时间:2023-12-03 03:16:32 26 4
gpt4 key购买 nike

我正在测试 Uri.EscapeDataString() 方法,并期待 http://msdn.microsoft.com/en-us/library/hh367887(v=vs.110).aspx 中所述的新行为。但是,当我在简单的 Azure 辅助角色(针对 .NET 4.5.1 并部署到 Windows 2012 R2)中运行此方法时。它不会返回正确的转义字符串。这是我在 WorkerRole.Run 方法中的简单程序:

public override void Run()
{
while (true)
{
var s = Uri.EscapeDataString("data (test)");
// This returns "data%20(test)" (.NET 4.0 behavior)
// However it should return "data%20%28test%29" (.NET 4.5 behavior)
Thread.Sleep(10000);
Trace.TraceInformation("Working" + s, "Information");
}
}

如果我将 EspcapeDataString 作为控制台 exe 运行,那么它会正确转义字符。即使程序集面向 .net 4.5.1,为什么它在工作主机进程中的行为有所不同?如何使其正常工作?

最佳答案

我查看了 Uri 类代码。我认为问题是 Uri.EscapeDataString 使用一个标志 ShouldUseLegacyV2Quirks 来确定 uri 转义是否应该遵循 RFC 2396 还是 3986。看来这个标志是由入口程序集的目标框架版本决定的。然而,在 Azure Wroker Host 中,它无法确定框架版本,可能是因为它是 native exe,因此即使执行程序集的目标是 4.5,它也会回退到旧行为。

关于c# - Azure工作主机未运行.net 4.5.1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25133679/

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